forked from: BeTweenAS3 delay完了のハンドリングをしたい、けどできない

by matsumos forked from BeTweenAS3 delay完了のハンドリングをしたい、けどできない (diff: 22)
♥0 | Line 42 | Modified 2009-10-15 15:56:33 | MIT License
play

ActionScript3 source code

/**
 * Copyright matsumos ( http://wonderfl.net/user/matsumos )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/zAHg
 */

// forked from quqjp's BeTweenAS3 delay完了のハンドリングをしたい、けどできない
package {
    import flash.display.Sprite;
    import flash.geom.ColorTransform
    import org.libspark.betweenas3.BetweenAS3
    import org.libspark.betweenas3.tweens.ITween;
    import org.libspark.betweenas3.easing.Back
    import org.libspark.betweenas3.easing.Expo
    import org.libspark.betweenas3.events.TweenEvent
        
    public class FlashTest extends Sprite {
        
        private var rectshape:BasicRectShapeSprite;        
        public function FlashTest() {

            //四角をつくります
            rectshape = new BasicRectShapeSprite();
            this.addChild(rectshape);
            
            betweenTest();
        }
        
        private function betweenTest():void{   
        
            
            /*
            
            実現したい内容:
            
            2秒間そのまま待つ、
            rectshape を緑に塗る、
            rectshape を2倍のscaleにtweenさせる。
            
            */
            
            BetweenAS3.delay(
                BetweenAS3.serial(
                    BetweenAS3.func(tint,[0x00FF00]),                
                    BetweenAS3.tween(rectshape, { scaleX:2, scaleY:2}, Expo.easeOut, 1.0)
            ),2.0).play();
            
            // うーん?
            var t:ITween = BetweenAS3.delay(BetweenAS3.func(null),4.0);
            t.addEventListener(TweenEvent.COMPLETE,function():void{tint(0x0000FF)});
            t.play();
            
            /*
            
            結果:
            
            t1.play() の段階で、 t0 の TweenEvent.PLAYイベントが発生してしまう
                
            */
            
        }   
        
        //rectshape着色
        private function tint(color:uint):void{
            var c:ColorTransform = rectshape.transform.colorTransform
            c.color = color;
            rectshape.transform.colorTransform = c;
        }
        
    }
    
  
}


import flash.display.Shape;
import flash.display.Graphics;
class BasicRectShapeSprite extends Shape{
	
	public function BasicRectShapeSprite(_width:Number = 100, _height:Number = 100, _color:Number = 0xFF0000) {
		var g:Graphics = this.graphics;
		g.beginFill(_color);
		g.drawRect(- _width / 2, - _height / 2, _width, _height);
		g.endFill();
	}
	
}