停止动态加载的 .SWF 循环,然后移动到主时间线上的下一帧
Posted
技术标签:
【中文标题】停止动态加载的 .SWF 循环,然后移动到主时间线上的下一帧【英文标题】:Stop dynamically loaded .SWF from looping, then move on to next frame on main timeline 【发布时间】:2013-12-19 20:12:10 【问题描述】:我是新来的,对动作脚本编程有点陌生,所以我为任何错误道歉。我正在使用 Adobe Flash CS6。
我正在处理一个 AS2 项目并尝试在我的主项目 .FLA 中动态加载一个外部 .SWF 文件和一个随附的 .MP3 文件。
我有什么:
3 帧。 在第一帧,我有一个简单的按钮,可以前进到下一帧和一个“stop();”代码。 在第 3 帧上,我只有一个简单的绘图知道何时到达它和一个“stop();”代码。
...在第二帧我有一个容器(所以,只是一个简单的电影剪辑),代码如下:
stop();
createEmptyMovieClip("intro_mc", 20);
intro_mc._x = 0;
intro_mc._y = 0;
loadMovie("TRANSICAO_LOGO.swf",intro_mc);
audioClip = new Sound();
audioClip.loadSound("TRANSICAO_LOGO.mp3",true);
onEnterFrame = function()
if(intro_mc.getBytesLoaded()==intro_mc.getBytesTotal() && intro_mc.getBytesTotal()>0 && intro_mc._currentframe==intro_mc._totalframes)
delete onEnterFrame;
nextFrame();
...所以,现在我可以单击第一帧上的按钮,它会在 MP3 文件旁边播放 SWF 文件。问题是,每次我测试它时,SWF 文件(不是 MP3)都会一直循环播放。只有一次它实际上进入了第 3 帧。
我真的不明白这有什么问题。我一直在网上寻找并试图找出问题所在。有谁知道这可能是什么原因造成的?
感谢您的帮助!
【问题讨论】:
【参考方案1】:循环是MovieClip
的自然行为。
只需将stop();
放在加载的 swf 的最后一帧。
或者,如果它来到你没有来源的地方
intro_mc.stop();
在您的 if(...)//here;
块内
PS:
intro_mc._x = 0;
intro_mc._y = 0;
这段代码什么都不做。新创建的 MovieClip 默认放置在 0,0 坐标处。
【讨论】:
谢谢。不幸的是,它没有用。我用“stop();”试了一下在 swf 的末尾(在我导出它然后在我的 .fla 中动态加载它之前)它会播放、停止,然后再次循环。我还尝试了“intro_mc.stop();”在 IF 内部,但它也一直在循环。如果我添加一个“nextframe();”命令它转到下一帧,然后循环。 循环播放是指您的“TRANSICAO_LOGO.swf”在主时间轴内不断变化帧,即使那里有停止?你能描述一下你的标志文件的结构吗? 我也试过“unloadMovieNum(1);”和 "unloadMovieNum("TRANSICAO_LOGO");"它仍然不起作用。这就像某种循环僵尸,我不知道如何阻止它。 是的,我就是这个意思。我再次将其导出到带有“stop();”的 .swf在文件的末尾,它会在加载时停止,但只是一秒钟,然后再次循环。 我用你的代码进行了测试。我的徽标文件只有 50 帧形状动画,最后停止。所有这些工作就像它在代码中描述的一样。我在第一帧按 btn。在第 2 次加载 swf 时,它会显示,然后到达终点,它会停止并转到第 3 帧。在第 3 帧,我看到一些图纸,但我仍然看到加载的 swf。但它仍然停在他的最后一帧。我的没有循环。所以我认为这是你的标志文件中的一些东西,它会干扰你的代码。以上是关于停止动态加载的 .SWF 循环,然后移动到主时间线上的下一帧的主要内容,如果未能解决你的问题,请参考以下文章