Динамическое добавление мувиклипа на сцену as3 - PullRequest
0 голосов
/ 03 декабря 2009

У меня есть кнопки на сцене (run1_btn - run5-btn), которые при нажатии добавляют на сцену фрагмент ролика. При нажатии кнопки мувиклип добавляется, но анимация уже завершена. Я думал, что когда mc будет добавлен на сцену, анимация начнется, но это не так. Кто-нибудь знает способ обойти это.

Вот мой код:

var handSlap:hand;
handSlap = new hand();

//event listeners
newPig.run1_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run2_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run3_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run4_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run5_btn.addEventListener(MouseEvent.CLICK, clickArea);




//functions
function clickArea(evtObj:MouseEvent):void
{
    trace(evtObj.target.name);
    addChild(handSlap);
    handSlap.x =200;
    handSlap.y=200;

}

Ответы [ 2 ]

1 голос
/ 04 декабря 2009

возможно более элегантно (зависит от вашей точки зрения), это гарантирует, что в любом контексте рука перезапустит анимацию временной шкалы при добавлении на сцену:

hand.addEventListener(Event.ADDED_TO_STAGE, onHandAddedToStage, false, 0, true);
function onHandAddedToStage(event:Event):void
{
    var mc:Movieclip = MovieClip(event.currentTarget);
    mc.gotoAndPlay(1);
}

Если вы не знакомы с моделью события, бит «false, 0, true» просто гарантирует, что если вам когда-либо понадобится выгрузить руку, она не будет зацеплена слушателем события и останется в памяти, вероятно вам это не нужно, но это не вредит.

0 голосов
/ 10 декабря 2009
  var newPig:pig;
newPig = new pig();
addChild(newPig);
newPig.y=360;
newPig.x=350;

var handSlap:hand;
handSlap = new hand();

//event listeners
newPig.run1_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run2_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run3_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run4_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run5_btn.addEventListener(MouseEvent.CLICK, clickArea);

handSlap.addEventListener(Event.ADDED_TO_STAGE, onHandAddedToStage, false, 0, true);


//functions
function clickArea(evtObj:MouseEvent):void
{
    trace(evtObj.target.name);

    addChild(handSlap);
    handSlap.x =200;
    handSlap.y=200;


}

function onHandAddedToStage(event:Event):void
{
    var mc:MovieClip = MovieClip(event.currentTarget);
    mc.gotoAndPlay(1);
}
...