Actionscript 3 从另一个/根 SWF 调用函数
Posted
技术标签:
【中文标题】Actionscript 3 从另一个/根 SWF 调用函数【英文标题】:Actionscript 3 call function from another/root SWF 【发布时间】:2015-08-21 03:42:12 【问题描述】:所以我有 'home.swf' 和 'play.swf' 当我运行应用程序时,我首先打开 home.swf。
home.swf 上有按钮可以播放..
//home.swf
btnPlay.addEventListener(MouseEvent.CLICK, pickPlay);
function pickPlay(event:MouseEvent):void
var loader:Loader = new Loader();
var SWFRequest:URLRequest = new URLRequest("play.swf");
loader.load(SWFRequest);
addChild(loader);
在 play.swf 上有一个返回主页的按钮
//play.swf
btnHome.addEventListener(MouseEvent.CLICK, clickHome);
function clickHome(event:MouseEvent):void
var loader:Loader = new Loader();
var SWFRequest:URLRequest = new URLRequest("home.swf");
loader.load(SWFRequest);
addChild(loader);
问题是..当我运行了这么多次..就像玩然后回到家,然后再玩.. 应用程序会滞后。因为这就像我只是加载回家并一遍又一遍地播放但不卸载它......
现在我需要卸载它,但有人告诉我让 main.swf 加载和卸载.. 所以当第一次运行 main.swf 时首先调用 home.swf ...... 当我们点击 play.. main.swf 将卸载 home.swf 并加载 play.swf
有什么解决办法吗? 我希望你能明白我的意思:)
【问题讨论】:
我已经编辑了我的问题,希望你能理解@HITMAN 如果您打算“回家”,为什么 play.swf 会自行加载? @null 那我该怎么办? @GandhyOnly 你能先解释一下你这样做的意图吗?我完全不明白。如果你想回家,如果你加载home.swf我会理解,但为什么要play.swf?这怎么能让你回家? @null 我的问题有问题..我已经编辑了它..play.swf 用于玩游戏...并且有一个返回主页的按钮..并且可以选择另一个游戏...我的意图是在加载新的 SWF 之前卸载 swf.. 上面的故事只是一个在加载新的 SWF 之前卸载的示例 【参考方案1】:你的加载器被函数中的一个局部变量引用。这使得以后很难引用它。
把你的代码改成这样:
btnPlay.addEventListener(MouseEvent.CLICK, pickPlay);
var loader:Loader = new Loader();
addChild(loader);
function pickPlay(event:MouseEvent):void
var SWFRequest:URLRequest = new URLRequest("play.swf");
loader.load(SWFRequest);
最简单的方法是将“返回主页”按钮放在主页上。如果从视觉上可以做到这一点,请考虑将按钮放入 play.swf
如果您确实想将按钮放入 play.swf,最好的选择是在按下按钮时在 play.swf 中调度一个事件。您在 home.swf 中监听事件,如果发生则卸载文件。
无论你怎么触发,加载器都提供了两种方法来卸载内容:unload()
和unloadAndStop()
您想调用其中任何一个来删除加载的文件。
【讨论】:
你有调度加载和卸载事件的例子吗?以上是关于Actionscript 3 从另一个/根 SWF 调用函数的主要内容,如果未能解决你的问题,请参考以下文章
将 ActionScript 2 SWF 转换为 ActionScript 3 SWF 文件(可以剥离代码)
Actionscript 3 - 在我的 swf 中加载另一个 swf 时出现列表错误
将 SWF 加载到 ActionScript 3 项目中 (Flex Builder)