如何正确加载多个外部 swf 文件?

Posted

技术标签:

【中文标题】如何正确加载多个外部 swf 文件?【英文标题】:How to properly load multiple external swf files? 【发布时间】:2016-11-09 04:39:36 【问题描述】:

我正在创建一个互动游戏。我现在有 6 个 swf 文件需要加载,并且需要按顺序播放。

我有很多关于这个话题的问题,这里是他们:)

第一个问题:如何在电影场景后加载外部 swf 文件?

在我的第三个 swf 文件中,我有一个电影场景,大约需要 30 秒才能完成。我知道延迟方法,但是我已经上传到我的网站后是否可以顺利运行?

第二个问题:如何在用户开始玩游戏之前加载所有外部文件?

如何在让用户玩游戏之前一次加载我的所有 swf 文件?

这是我的代码的部分示例:

import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;

var myClip:MovieClip = root as MovieClip;
var externalClip:MovieClip;
var myLoader:Loader = new Loader();
var myLoader1:Loader = new Loader();

myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,       loaderCompletedHandler);


function loaderCompletedHandler(evt:Event):void 
externalClip = myLoader.content as MovieClip;
externalClip.ext_btn.addEventListener(MouseEvent.CLICK,extCommunicate);

  function extCommunicate(evt:MouseEvent):void 
    trace("TEST");
    myLoader1.contentLoaderInfo.addEventListener(Event.COMPLETE, thirdloaderCompletedHandler);
    var newstring:String = "third.swf";
    var newREQ:URLRequest = new URLRequest(newstring);
    addChild(myLoader1);
    myLoader1.load(newREQ);
    myLoader1.x=40;
    myLoader1.y=20;
    removeChild(myLoader);
  


function thirdloaderCompletedHandler(evt:Event):void 
    trace("YEAH");


var externalString:String = "external.swf";
var urlREQ:URLRequest = new URLRequest(externalString);

playbtn.addEventListener(MouseEvent.CLICK,swfLoad);
function swfLoad(evt:MouseEvent):void 
    addChild(myLoader);
    myLoader.load(urlREQ);
    myLoader.x=40;
    myLoader.y=20;

第三个问题:上面的代码是加载多个 swf 文件的正确方法吗?

【问题讨论】:

【参考方案1】:

很多问题... (1) 您可以通过框架操作而不是AS3连接许多加载它们的swf文件。这样,您可以确保仅在上一部电影结束时才加载下一部电影。或者,用你的话说,你只在第一个“电影”场景结束后加载下一部电影。因此不要使用“延迟”,因为这会根据用户在机器和带宽方面的配置产生很大不同的结果。

(2) 您可以像预加载单个电影一样一次预加载所有电影,只需编写正确的代码,检查是否加载了电影 1,然后检查电影 2 等等。

(3) 测试您自己的代码并验证它是否有效。如果不是,请尽可能多地了解错误消息和条件,并在 *** 上打开另一个问题,公开所有场景、你拥有什么、你得到什么以及你期望什么。 最好的

【讨论】:

感谢您的回答,非常感谢。电影场景仅在我的第二个 swf(不是第三个)文件中。其他 swf 文件将由 mousevent 操作加载。这将是场景 - 主 SWF 有播放按钮,将加载第 2 个 swf - 第 2 个 swf 有电影场景,然后将加载第 3 个 swf。 - 也可以通过单击按钮加载第 3 到第 6 个 swf。 谢谢。就是这样,你明白了。首先加载,在“播放”时加载电影,最后,在此处放置一个帧动作以加载第三个。电影。很快就会带着你的结果和疑问回来,如果我能帮助你更多,我会很高兴(之前很多很多晚上都在行动......)。但是,做新的问题......这一个已经结束了:) 非常感谢。我得到了它。一次加载所有 swf 文件怎么样?你能给我一个关于如何做到这一点的提示吗?目前,我只是根据用户交互加载每个 swf 文件(第 3 个 swf 除外)。我尝试在我的网站上播放它,但每个 swf 文件的加载时间过长。 这就是你想要的。仔细按照说明进行操作,详细注意所有次要方面,您将立即加载所有 swf。然后,当你真的需要玩它们时,它们会立即运行,因为它们已经被加载:actionscript.org/forums/437364-post4.html(如果这对你有帮助,请不要忘记在 SO 上将我的答案作为你的有效答案) .谢谢你,继续加油。 非常感谢,该教程将帮助我加强:)

以上是关于如何正确加载多个外部 swf 文件?的主要内容,如果未能解决你的问题,请参考以下文章

一个Loader加载多个swf

从 Flash 中的 swf 文件外部加载 xml 文件

as3 从网络外部加载 swf 以控制从网络外部加载的 swf

AS3加载和显示外部SWF文件

ActionScript 3 AS3加载和显示外部SWF文件

如何在android中加载swf as2?