Анимация фона в динамических изображениях - AS3 Flash

У меня есть метод, который принимает несколько параметров и динамически добавляет три изображения на сцену, а также добавляет фоновое изображение к трем изображениям.

Я пытаюсь понять следующее: как я могу анимировать анимацию в фоновом фрагменте ролика и при полной анимации в трех динамических фрагментах ролика? Могу ли я иметь функцию внутри функции, которая использует одни и те же переменные?

Примерно так:

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);

                    }

        }

person Denoteone    schedule 25.02.2012    source источник


Ответы (2)


Вы близки к этому, вы не можете определить функцию внутри такой функции, но вы можете сделать следующее:

       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);
              });
      }

Это называется закрытием, потому что это анонимная функция, которая ссылается на значения за пределами своей непосредственной области действия. Вы можете узнать о них больше в Википедии. Также обратите внимание, как изменился removeEventListener: это способ удалить анонимную функцию, поскольку для нее не существует ссылки на имя.

person DNJohnson    schedule 25.02.2012
comment
Спасибо. Я получил кое-что из вашего ответа. Спасибо! +1 проверил. - person Denoteone; 28.02.2012

использовать TweenLite? http://www.greensock.com/tweenlite

использование:

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

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