AS3S.ORG

ACTIONSCRIPT 3.0 SOURCES

org.as3s.Tween Ver2.0の使い方(4) オブジェクトトゥイーン

org.as3s.Tween Ver2.0では変化させたいパラメータとして、数値だけでなくオブジェクトを指定することができます。
パラメータとしてオブジェクトを指定すると、そのオブジェクト内に含まれる数値を一括して変化させることができます。
TweenerなどではColorTransform、Matrix、BitmapFilterのトゥイーンを行いたい場合にはそれぞれに対応した拡張クラスを読み込む必要がありますが、org.as3s.Tween Ver2.0では、この新機能によってTweenライブラリ内で特殊な処理を行うことなく、ColorTransform、Matrix、BitmapFilterなどのトゥイーンを行うことが可能になりました。

ColorTransform Tween

org.as3s.Tweenでは、Tween対象にtransformプロパティを指定し、パラメータにColorTransformオブジェクトを指定することでColorTransformのトゥイーンを行うことができます。

var endColor:ColorTransform = new ColorTransform();
endColor.color = 0xFFFF00;
Tween.start(sp.transform, {}, {colorTransform:endColor}, Quadratic.easeOut, 60);

動作サンプル(画面クリックでスタートします)


package {
    import fl.motion.easing.*;
   
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.filters.*;
    import flash.geom.ColorTransform;
   
    import org.as3s.Tween;
   
    [SWF(width='700',height='300',backgroundColor='0xeeeeee',frameRate='60')]
    public class TweenSample4a extends Sprite {
       
        private var tween:Tween;
        private var sp:Sprite;
       
        public function TweenSample4a() {
           
            //Target Object
            sp = new Sprite();
            sp.graphics.beginFill(0x333333);
            sp.graphics.drawRect(0, 0, 600, 200);
            sp.graphics.endFill();
            sp.x = sp.y = 50;
            addChild(sp);
           
            //Mouse Event
            stage.addEventListener(MouseEvent.CLICK, onClick);
           
        }
       
        private function onClick(event:Event):void {
            //Reset
            sp.transform.colorTransform = new ColorTransform();
           
            //ColorTrasnform Tween
            var endColor:ColorTransform = new ColorTransform();
            endColor.color = 0xFFFF00;
            Tween.start(sp.transform, {}, {colorTransform:endColor}, Quadratic.easeOut, 60);
        }
       
    }
}

Matrix Tween

org.as3s.Tweenでは、Tween対象にtransformプロパティを指定し、パラメータにMatrixオブジェクトを指定することでMatrixのトゥイーンを行うことができます。

var endMatrix:Matrix = new Matrix(3, 0.2, 0.5, 1.5, 150, 100);
Tween.start(sp.transform, {}, {matrix:endMatrix}, Quadratic.easeOut, 24);

ColorTransformオブジェクトと同時に設定することもできます。

var endColor:ColorTransform = new ColorTransform();
endColor.color = 0xFFFF00;
var endMatrix:Matrix = new Matrix(3, 0.2, 0.5, 1.5, 150, 100);
Tween.start(sp.transform, {}, {colorTransform:endColor, matrix:endMatrix}, Quadratic.easeOut, 24);

動作サンプル(画面クリックでスタートします)


package {
    import fl.motion.easing.*;
   
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.filters.*;
    import flash.geom.Matrix;
   
    import org.as3s.Tween;
   
    [SWF(width='700',height='300',backgroundColor='0xeeeeee',frameRate='60')]
    public class TweenSample4b extends Sprite {
       
        private var tween:Tween;
        private var sp:Sprite;
       
        public function TweenSample4b() {
           
            //Target Object
            sp = new Sprite();
            sp.graphics.beginFill(0x333333);
            sp.graphics.drawRect(0, 0, 100, 100);
            sp.graphics.endFill();
            addChild(sp);
           
            //Mouse Event
            stage.addEventListener(MouseEvent.CLICK, onClick);
           
        }
       
        private function onClick(event:Event):void {
            //Reset
            sp.transform.matrix = new Matrix();
           
            //Matrix Tween
            var endMatrix:Matrix = new Matrix(3, 0.2, 0.5, 1.5, 150, 100);
            Tween.start(sp.transform, {}, {matrix:endMatrix}, Quadratic.easeOut, 24);
        }
       
    }
}

Filter Tween

org.as3s.Tweenでは、パラメータにBitmapFilterオブジェクトの配列を指定することでBitmapFilterのトゥイーンを行うことができます。

sp.filters = [new BevelFilter(0), new DropShadowFilter(0,45,0,1,0,0)];
var endFilters:Array = [new BevelFilter(5), new DropShadowFilter(10,45,0,1,20,20)];   
Tween.start(sp, {}, {filters:endFilters}, Quadratic.easeOut, 24);

この場合、トゥイーン開始時には最終状態と同じ種類のフィルタが適用されている必要があります。

動作サンプル(画面クリックでスタートします)


package {
    import fl.motion.easing.*;
   
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.filters.*;
   
    import org.as3s.Tween;
   
    [SWF(width='700',height='300',backgroundColor='0xeeeeee',frameRate='60')]
    public class TweenSample4c extends Sprite {
       
        private var tween:Tween;
        private var sp:Sprite;
       
        public function TweenSample4c() {
           
            //Target Object
            sp = new Sprite();
            sp.graphics.beginFill(0x333333);
            sp.graphics.drawRect(0, 0, 600, 200);
            sp.graphics.endFill();
            sp.x = sp.y = 50;
            addChild(sp);
           
            //Mouse Event
            stage.addEventListener(MouseEvent.CLICK, onClick);
           
        }
       
        private function onClick(event:Event):void {
            //Reset
            sp.filters = [new BevelFilter(0), new DropShadowFilter(0,45,0,1,0,0)];
           
            //Filter Tween
            var endFilters:Array = [new BevelFilter(5), new DropShadowFilter(10,45,0,1,20,20)];   
            Tween.start(sp, {}, {filters:endFilters}, Quadratic.easeOut, 24);         
        }
       
    }
}

カスタムオブジェクトのTween

入れ子になったオブジェクトも内部の数値データを再帰的にチェックするので、例えば以下のようなカスタムオブジェクトに対してもトゥイーンを実行することが出来ます。

test = {a:{aa:0}, b:{bb:{bbb:1000}}};
Tween.start(test, {UPDATE:onUpdate}, {a:{aa:100}, b:{bb:{bbb:2000}}}, Quadratic.easeOut, 10);
       
private function onUpdate(event:Event):void {
    trace("a.aa:"+test.a.aa, "b.bb.bbb:"+test.b.bb.bbb);
}

▼出力結果
a.aa:0 b.bb.bbb:1000
a.aa:15.972222222222221 b.bb.bbb:1159.7222222222222
a.aa:30.55555555555555 b.bb.bbb:1305.5555555555557
a.aa:43.75 b.bb.bbb:1437.5
a.aa:55.55555555555555 b.bb.bbb:1555.5555555555557
a.aa:65.97222222222223 b.bb.bbb:1659.7222222222222
a.aa:75 b.bb.bbb:1750
a.aa:82.63888888888889 b.bb.bbb:1826.3888888888887
a.aa:88.88888888888889 b.bb.bbb:1888.888888888889
a.aa:93.75 b.bb.bbb:1937.5
a.aa:97.22222222222221 b.bb.bbb:1972.2222222222222
a.aa:99.30555555555556 b.bb.bbb:1993.0555555555557
a.aa:100 b.bb.bbb:2000

Written by admin

August 1st, 2008 at 10:13 pm

Posted in Tween

Leave a Reply