如何在 Flash AS3 中用鼠标单击暂停多个符号
how to pause multiple symbols with mouse click in flash AS3
我一直在使用 actionscript 3 来控制我的动画,
我可以播放和重置视频,但无法全局暂停。
一共有3个符号,
第一个父级动画片段
第二个带有动画的子动画片段 --> 我可以暂停它。
带动画的第 3 个子动画片段 --> 我无法暂停此
脚本
包库{
import flash.display.MovieClip;
import flash.events.*;
public class Controlstry extends MovieClip {
public function Controlstry() {
// constructor code
addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(evt=null)
{
if(video_mc != null)
{
playBtn.addEventListener(MouseEvent.MOUSE_DOWN, playVideo);
pauseBtn.addEventListener(MouseEvent.MOUSE_DOWN, pauseVideo);
replayBtn.addEventListener(MouseEvent.MOUSE_DOWN,replayVideo);
}
}
private function playVideo(evt:MouseEvent)
{
if(video_mc.currentFrame == video_mc.totalFrames)
{
video_mc.gotoAndPlay(2);
}
else
{
video_mc.play();
}
}
private function pauseVideo(evt:MouseEvent)
{
video_mc.stop();
}
private function replayVideo(evt:MouseEvent)
{
video_mc.gotoAndPlay(2);
}
}
}
从您的代码中看不太清楚您要控制的三个影片剪辑是什么。
假设您有 3 个相互嵌套的影片剪辑,您可以对每个影片剪辑调用 stop() 来停止它们的动画(假设它们有时间轴动画)
因此,如果您的结构如下所示:a-->b-->c,其中 a 是父级,b 是 a 的子级,c 是 b 的子级,您可以调用
a.stop();
a.b.stop();
a.b.c.stop();
这显然是假设您在 IDE 中为子属性声明了实例名称。
希望这对您有所帮助。
编辑:
根据您发送的 FLA,您应该执行以下步骤来实现您想要的:
- 进入你舞台上的 video_mc 和 select 第 9 层,并为其指定实例名称 'backgroundMC'。
像这样修改你的脚本:
package lib {
import flash.display.MovieClip;
import flash.events.*;
public class Controlstry extends MovieClip {
public function Controlstry() {
// constructor code
addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(evt:Event=null)
{
if(video_mc != null)
{
playBtn.addEventListener(MouseEvent.CLICK, playVideo);
pauseBtn.addEventListener(MouseEvent.CLICK, pauseVideo);
replayBtn.addEventListener(MouseEvent.CLICK,replayVideo);
}
}
private function playVideo(evt:MouseEvent)
{
if(video_mc.currentFrame == video_mc.totalFrames)
{
video_mc.gotoAndPlay(2);
video_mc.backgroundMC.gotoAndPlay(1);
}
else
{
video_mc.play();
video_mc.backgroundMC.gotoAndPlay(1);
}
}
private function pauseVideo(evt:MouseEvent)
{
video_mc.stop();
video_mc.backgroundMC.gotoAndStop(1);
}
private function replayVideo(evt:MouseEvent)
{
video_mc.gotoAndPlay(2);
video_mc.backgroundMC.gotoAndPlay(1);
}
}
}
这里有几点需要注意:
- 如果您希望它响应点击事件,请使用MouseEvent.CLICK。您使用了 MouseEvent.DOWN
- 总是给事件一个类似 evt:Event 的类型,而不仅仅是 evt=null。
- if(video_mc != null) 可以通过 if(video_mc).
轻松检查
希望这能回答问题。
我一直在使用 actionscript 3 来控制我的动画,
我可以播放和重置视频,但无法全局暂停。
一共有3个符号,
第一个父级动画片段 第二个带有动画的子动画片段 --> 我可以暂停它。 带动画的第 3 个子动画片段 --> 我无法暂停此
脚本
包库{
import flash.display.MovieClip;
import flash.events.*;
public class Controlstry extends MovieClip {
public function Controlstry() {
// constructor code
addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(evt=null)
{
if(video_mc != null)
{
playBtn.addEventListener(MouseEvent.MOUSE_DOWN, playVideo);
pauseBtn.addEventListener(MouseEvent.MOUSE_DOWN, pauseVideo);
replayBtn.addEventListener(MouseEvent.MOUSE_DOWN,replayVideo);
}
}
private function playVideo(evt:MouseEvent)
{
if(video_mc.currentFrame == video_mc.totalFrames)
{
video_mc.gotoAndPlay(2);
}
else
{
video_mc.play();
}
}
private function pauseVideo(evt:MouseEvent)
{
video_mc.stop();
}
private function replayVideo(evt:MouseEvent)
{
video_mc.gotoAndPlay(2);
}
}
}
从您的代码中看不太清楚您要控制的三个影片剪辑是什么。
假设您有 3 个相互嵌套的影片剪辑,您可以对每个影片剪辑调用 stop() 来停止它们的动画(假设它们有时间轴动画)
因此,如果您的结构如下所示:a-->b-->c,其中 a 是父级,b 是 a 的子级,c 是 b 的子级,您可以调用
a.stop();
a.b.stop();
a.b.c.stop();
这显然是假设您在 IDE 中为子属性声明了实例名称。
希望这对您有所帮助。
编辑:
根据您发送的 FLA,您应该执行以下步骤来实现您想要的:
- 进入你舞台上的 video_mc 和 select 第 9 层,并为其指定实例名称 'backgroundMC'。
像这样修改你的脚本:
package lib {
import flash.display.MovieClip;
import flash.events.*;
public class Controlstry extends MovieClip {
public function Controlstry() {
// constructor code
addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(evt:Event=null)
{
if(video_mc != null)
{
playBtn.addEventListener(MouseEvent.CLICK, playVideo);
pauseBtn.addEventListener(MouseEvent.CLICK, pauseVideo);
replayBtn.addEventListener(MouseEvent.CLICK,replayVideo);
}
}
private function playVideo(evt:MouseEvent)
{
if(video_mc.currentFrame == video_mc.totalFrames)
{
video_mc.gotoAndPlay(2);
video_mc.backgroundMC.gotoAndPlay(1);
}
else
{
video_mc.play();
video_mc.backgroundMC.gotoAndPlay(1);
}
}
private function pauseVideo(evt:MouseEvent)
{
video_mc.stop();
video_mc.backgroundMC.gotoAndStop(1);
}
private function replayVideo(evt:MouseEvent)
{
video_mc.gotoAndPlay(2);
video_mc.backgroundMC.gotoAndPlay(1);
}
}
}
这里有几点需要注意:
- 如果您希望它响应点击事件,请使用MouseEvent.CLICK。您使用了 MouseEvent.DOWN
- 总是给事件一个类似 evt:Event 的类型,而不仅仅是 evt=null。
- if(video_mc != null) 可以通过 if(video_mc). 轻松检查
希望这能回答问题。