如何限制一个影片剪辑只播放一次并使用类移动到另一个影片剪辑?

Posted

技术标签:

【中文标题】如何限制一个影片剪辑只播放一次并使用类移动到另一个影片剪辑?【英文标题】:how to ristrict a movie clip to play only once and move to another movie clip using class? 【发布时间】:2015-10-08 19:55:45 【问题描述】:

我一直在开发一个应用程序,其中在主屏幕上有一个影片剪辑 ball_1 会重复播放,只要按下任何按钮,另一个影片剪辑 ball_2 就会开始,而前一个影片剪辑 ball_1 会消失。我希望 ball_2 只播放一次,然后消失,然后影片剪辑 ball_1 返回到主屏幕。我正在使用基于类的脚本。

当前代码:

BTN_1.addEventListener(MouseEvent.CLICK,playClip_1); 

function playClip_1(e:MouseEvent):void 
    ball_2.visible = true; 
    ball_2.gotoAndPlay(2); 
    ball_1.visible = false; 

【问题讨论】:

请出示您当前的相关代码 BTN_1.addEventListener(MouseEvent.CLICK,playClip_1);函数 playClip_1(e:MouseEvent):void ball_2.visible = true; ball_2.gotoAndPlay(2); ball_1.visible = false; 很好,现在,目前的结果是什么?例如。您当前的代码做什么或不做什么与您期望的不同? ball_2 的时间线末尾是否有任何代码向发布的代码表明它已播放完毕? 好吧,我在 ball_2 时间线的末尾有一个 stop() 代码来阻止它重复。但是,当ball_2到达最后一帧时,我无法将ball_1带回来。不知道这是否与帧标签有关? 【参考方案1】:

好的,我认为现在几乎没有足够的信息来回答这个问题。

首先,您需要两个函数,一个显示ball_1,一个显示ball_2

function playClip_1(e:MouseEvent = null):void 
    ball_2.visible = true; 
    ball_2.gotoAndPlay(2); 
    ball_1.visible = false; 
    ball_1.stop(); //no sense having it keep playing when not visible


//function to call when ball_2 finishes it's timeline
function clip1Complete(e:Event = null):void 
    ball_2.visible = false;  
    ball_1.visible = true; 
    ball_1.play();

现在,您需要一种方法让 ball_2 在其时间线结束时调用 clip1Complete 函数。

最好的方法是使用事件,在与上面相同的代码上下文中,输入:

ball_2.addEventListener(Event.COMPLETE, clip1Complete);

然后,在ball_2 时间线的最后一帧,输入:

stop;
dispatchEvent(new Event(Event.COMPLETE));

或者,您可以放弃事件侦听器,直接在ball_2 的最后一帧调用函数,如下所示:

stop();
MovieClip(parent).clip1Complete();

【讨论】:

以上是关于如何限制一个影片剪辑只播放一次并使用类移动到另一个影片剪辑?的主要内容,如果未能解决你的问题,请参考以下文章

将鼠标悬停在完整播放影片剪辑

完成播放后停止影片剪辑的 AS3 按钮

ActionScript 影片剪辑向左移动,但不向右移动

在舞台 AS3 上放置多个影片剪辑实例

如何让 gif 在 Java 中运行一次并停止?

FLASH中影片剪辑嵌套按钮实现。AS2.0