2012-02-25 9 views
0

私はいくつかのパラメータを取り、3つの画像をダイナミックにステージに追加する方法を持っています.3つの画像に背景画像も追加します。Tween背景と動的画像 - AS3 Flash

私は次のことを理解しようとしています:バックグラウンドのムービークリップと3つのダイナミックムービークリップの完全なトゥイーンでトゥーイングするにはどうすればよいですか?同じ変数を共有する関数内に関数を持つことはできますか?

次のような何か:

public function addImages(BackGround:String,Image1:String,Image2:String,Image3:String):void 
     { 


      var symbol_class:Class = getDefinitionByName(BackGround); 
      var image1_class:Class = getDefinitionByName(Image1); 
      var image2_class:Class = getDefinitionByName(Image2); 
      var image3_class:Class = getDefinitionByName(Image3); 

        var main_bg = new symbol_class(); 
        var image_1 = new image1_class(); 
        var image_2 = new image2_class(); 
        var image_3 = new image3_class(); 

      main_box.addChild(main_bg); 

        var BGTween:Tween = new Tween(my_thumb, "alpha", Strong.easeIn, 0,1,0.5, true); 
        BGTween.addEventListener(TweenEvent.MOTION_FINISH, onFinish); 

        //WHEN BACKGROUND TWEEN IS COMPLETE NOW ADD THE OTHER IMAGES AND FADE THEM IN. 
        function onFinish(e:TweenEvent):void { 
        BGTween.removeEventListener(TweenEvent.MOTION_FINISH, onFinish); 

       main_box.addChild(image_1); 
        var image_1_tween:Tween = new Tween(image_1, "alpha", Strong.easeIn, 0,1,0.5, true); 

       main_box.addChild(image_2); 
        var image_2_tween:Tween = new Tween(image_2, "alpha", Strong.easeIn, 0,1,0.5, true); 

       main_box.addChild(image_3); 
        var image_3_tween:Tween = new Tween(image_3, "alpha", Strong.easeIn, 0,1,0.5, true); 

        } 

     } 

答えて

1

あなたがそこに近いなら、あなたは非常にそのように関数内で関数を定義することはできませんが、次の操作を行うことができます。

 public function addImages(BackGround:String,Image1:String,Image2:String,Image3:String):void 
     { 


       var symbol_class:Class = getDefinitionByName(BackGround); 
       var image1_class:Class = getDefinitionByName(Image1); 
       var image2_class:Class = getDefinitionByName(Image2); 
       var image3_class:Class = getDefinitionByName(Image3); 

       var main_bg = new symbol_class(); 
       var image_1 = new image1_class(); 
       var image_2 = new image2_class(); 
       var image_3 = new image3_class(); 

       main_box.addChild(main_bg); 

       var BGTween:Tween = new Tween(my_thumb, "alpha", Strong.easeIn, 0,1,0.5, true); 
       BGTween.addEventListener(TweenEvent.MOTION_FINISH, function(e:TweenEvent) { 
        //WHEN BACKGROUND TWEEN IS COMPLETE NOW ADD THE OTHER IMAGES AND FADE THEM IN. 
        (e.target as EventDispatcher).removeEventListener(e.type, arguments.callee); 

        main_box.addChild(image_1); 
        var image_1_tween:Tween = new Tween(image_1, "alpha", Strong.easeIn, 0,1,0.5, true); 

        main_box.addChild(image_2); 
        var image_2_tween:Tween = new Tween(image_2, "alpha", Strong.easeIn, 0,1,0.5, true); 

        main_box.addChild(image_3); 
        var image_3_tween:Tween = new Tween(image_3, "alpha", Strong.easeIn, 0,1,0.5, true); 
       }); 
     } 

これはクロージャと呼ばれ、アノニマスファンクションはその直前のスコープ外の値を参照するためです。 Wikipediaで詳細を読むことができます。 removeEventListenerがどのように変更されたかにも注意してください。これは名前の参照が存在しないため、匿名関数を削除する方法です。

+0

おかげで私は実際にあなたの応答からいくつかのことを得ました。ありがとう! +1が確認されました。 – Denoteone

0

使用するTweenLite? http://www.greensock.com/tweenlite

用法:

TweenLite.to(bgObject, timeToFade,{alpha:0, onComplete:addThreeImages}); 

public function addThreeImages():void 
{ 
//here you can add your images 
}