停止动态加载的 .SWF 循环,然后移动到主时间线上的下一帧

Posted

技术标签:

【中文标题】停止动态加载的 .SWF 循环,然后移动到主时间线上的下一帧【英文标题】:Stop dynamically loaded .SWF from looping, then move on to next frame on main timeline 【发布时间】:2013-12-19 20:12:10 【问题描述】:

我是新来的,对动作脚本编程有点陌生,所以我为任何错误道歉。我正在使用 Adob​​e 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 循环,然后移动到主时间线上的下一帧的主要内容,如果未能解决你的问题,请参考以下文章

为啥它不加载 part1.swf ?

保存简单Flash游戏的级别?

AS3 Loader 不断重新加载相同的 swf

HTML页面可以设置swf文件循环播放吗

在子 swf 的最后一帧卸载子 swf

从网站的不同页面访问时未从缓存加载 SWF 文件?