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

by quqjp
♥0 | Line 41 | Modified 2009-10-15 16:18:04 | MIT License
play

ActionScript3 source code

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

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させる。
            
            */
            
        
            // 四角のscaleを2倍にします
            //var t0:ITween = BetweenAS3.tween(rectshape, { scaleX:2, scaleY:2}, Expo.easeOut, 1.0); まちがえた;汗
            var t0:ITween = BetweenAS3.tween(rectshape, { scaleX:2, scaleY:2}, null, 1.0,Expo.easeOut);
            
            // t0開始ハンドリング
            t0.addEventListener(TweenEvent.PLAY, function(e:TweenEvent) {
                e.target.removeEventListener(e.type, arguments.callee);
                //色を変えます
                tint();  
            })
            
            // t0 を2秒後に開始させます
            var t1:ITween = BetweenAS3.delay(t0, 2.0);
            
            // 開始
            t1.play()
            
            
            /*
            
            結果:
            
            t1.play() の段階で、 t0 の TweenEvent.PLAYイベントが発生してしまう
                
            */
            
        }   
        
        //rectshape着色
        private function tint():void{
            var c:ColorTransform = rectshape.transform.colorTransform
            c.color = 0x00ff00;
            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();
	}
	
}

Forked