动态添加movieclip到舞台as3

时间:2009-12-03 10:10:29

标签: actionscript-3 movieclip

我在舞台上有一些按钮(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 个答案:

答案 0 :(得分:1)

可能更优雅(取决于你的观点),它确保在任何上下文中,当它被添加到舞台时,手将重新启动其时间轴动画:

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”位只会确保如果您需要卸载它,它将不会被事件侦听器阻挡并留在内存中,可能你不需要它,但没有任何伤害。

答案 1 :(得分:0)

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