2017-04-02 38 views
1

我正在为水滴落下的泄漏物体制作动画。只要我点击不同的对象,我就想让泄漏停止。当我使用stop();它刚刚停止,水滴卡在空中。当然,我不想要这个,我该如何解决它?如何在停止之前制作循环的脚本?

Bloempoteetkamer.addEventListener(MouseEvent.CLICK, rotplanteetkamer); 

Bloempoteetkamer.buttonMode=true; 
Bloempoteetkamer.mouseChildren=false; 

function rotplanteetkamer(evt:MouseEvent){ 
    Planteetkamer.play() 
    Druppel.stop() 
    Bloempoteetkamer.removeEventListener(MouseEvent.CLICK, rotplanteetkamer); 
    Bloempoteetkamer.buttonMode=false; 
    stop(); 
} 

Bloempoteetkamer是,你必须点击停止泄漏的对象。 Druppel是跌倒的水滴。 Planteetkamer是当我点击Bloempoteetkamer时播放的不同脚本。

+0

我们应该如何知道没有看到任何代码? – bejado

+0

Bloempoteetkamer.addEventListener(MouseEvent.CLICK,rotplanteetkamer); Bloempoteetkamer.buttonMode = true; Bloempoteetkamer.mouseChildren = false; 功能rotplanteetkamer(EVT:的MouseEvent){ \t Planteetkamer.play() \t Druppel.stop() \t Bloempoteetkamer.removeEventListener(MouseEvent.CLICK,rotplanteetkamer); \t Bloempoteetkamer.buttonMode = false; \t stop(); \t } Bloempoteetkamer是,你必须点击停止泄漏的对象。 Druppel是跌倒的水滴 Planteetkamer是一个不同的脚本,当我点击Bloempoteetkamer – Emmy

+0

更新你的问题,不要发表你的代码作为评论 – bejado

回答

3

您可能希望使用EnterFrame选项来检查时,MClip(Druppel)的播放过程中,如果它实际上已经到达了最后一帧,然后才宜MClip stop()

尝试这样的:

Bloempoteetkamer.addEventListener(MouseEvent.CLICK, rotplanteetkamer); 

Bloempoteetkamer.buttonMode=true; 
Bloempoteetkamer.mouseChildren=false; 

function rotplanteetkamer(evt:MouseEvent){ 
    Planteetkamer.play(); 
    //Druppel.stop(); 
    Druppel.addEventListener(Event.ENTER_FRAME, check_if_LastFrame); 
    Bloempoteetkamer.removeEventListener(MouseEvent.CLICK, rotplanteetkamer); 
    Bloempoteetkamer.buttonMode=false; 
    stop(); 
} 


function check_if_LastFrame(target : Event) : void 
{ 
    if (target.currentFrame == target.totalFrames) 
    { 
     Druppel.stop(); 
     Druppel.removeEventListener(Event.ENTER_FRAME, check_ifLastFrame); 
    } 
} 
+0

测试代码,然后让我知道是否有问题。目前无法对其进行测试,但通常情况就是这样。 –

1

另一个更紧凑的选择是使用AddFrameScript。方法addFrameScript将代码注入到MovieClip的特定帧上,就像使用Adobe Animate中的工具那样完成了操作。

下面是创建一个可重复使用的功能停止影片剪辑时,它旁边到达它的最后一帧的例子:

function stopClipAfterLastFrame(clip:MovieClip):void { 
    //addFrameScript to the last frame that calls an inline function 
    clip.addFrameScript(clip.totalFrames-1, function(){ 
     clip.stop(); //stop the clip 
     clip.addFrameScript(clip.totalFrames-1, null); //remove the frame script so it doesn't stop again the next time it plays 
    }); 
} 

所以,一旦它到达最后一帧,如果你叫stopClipAfterLastFrame(Druppel),将停止它。

牢记addFrameScript是无证功能 - 这意味着它可能会在未来的某个Flash播放器/空气释放不再工作了 - 虽然这是在这一点上是非常不可能的。删除帧脚本(通过传递null作为函数)以防止内存泄漏也非常重要。