Фон анимации и затем динамические изображения - AS3 Flash - PullRequest
0 голосов
/ 25 февраля 2012

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

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

Что-то вроде следующего:

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

                    }

        }

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

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

       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 , это способ удалить анонимную функцию, поскольку для нее не существует ссылки на имя.

0 голосов
/ 27 февраля 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
}
...