2010-02-11 99 views
0

当按下某些按钮时,我想在舞台上加载和加载mc。在按钮按下时加载mc,并检查mc是否正在运行

问题是,虽然其中一个MC正在播放,我不希望任何按钮的工作 - 换句话说,用户必须等待短暂的动作停止播放,然后再按另一个按钮看另一个动画(或者甚至是同样的动画)。

我很好,基本的AS2,但我想在AS3做到这一点。
attachMovie和removeMovieClip仍然是从AS3的库中加载/卸载mc's的approp方法。
我也不确定如何检查MC是否在AS3中播放(是否有属性?或者可能设置全局变量?)。

任何想法??

回答

0

你想要的东西,如:

myBtn.addEventListener(MouseEvent.CLICK,onMyBtnClick) 

function onMyBtnClick(e:MouseEvent) 
{ 
    //TODO disable buttons 

    //export for actionscript setting in library 
    var myMovie:SomeMovieClipFromLibrary = new SomeMovieClipFromLibrary(); 
    addChild(myMovie); 
    myMovie.addEventListener(Event.ENTER_FRAME,onMovieEnterFrame); 
    myMovie.play(); 

} 

function onMovieEnterFrame(e:Event) 
{ 
    if(e.currentTarget.currentFrame ==e.currentTarget.totalFrames) 
    { 
    //TODO enable buttons 
    e.currentTarget.removeEventListener(Event.ENTER_FRAME,onMovieEnterFrame); 
    removeChild(e.currentTarget as DisplayObject); 

    } 

} 
+0

三江源 - 我用这个方法(它添加MC),除了我要去哪里收到错误1118(静态Object类型的值隐式强制为可能无关的类型flash.display:DisplayObject)与代码行的关系:removeChild(e.currentTarget); 有什么想法? – 2010-02-11 09:52:30

+0

为了克服我用removeChild(e.currentTarget)引用的问题,我使用addChildAt(myMovie,0)和removeChildAt(0)取得了一些成功。 使用一致的索引也确保了一次只能播放一个mc,这是我需要的另一个功能。 – 2010-02-11 10:42:53

+0

啊是的我认为这个错误是因为它应该是removeChild(e.currentTarget作为DisplayObject)。我会编辑它来解决这个问题。请注意基于索引的移除,如果您碰巧添加其他显示对象,则容易改变它们。如果您使用更新后的代码并确保您启用和禁用按钮,那么应该一次只播放一部电影(最后在离开工作时快速写下这段代码,最后对自己进行了测试:P) – Allan 2010-02-11 10:58:30