【问题标题】:Actionscript 3 call function from another/root SWFActionscript 3 从另一个/根 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 之前卸载的示例

标签: actionscript-3 flash actionscript flash-cs6


【解决方案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() 您想调用其中任何一个来删除加载的文件。

【讨论】:

  • 你有调度加载和卸载事件的例子吗?
猜你喜欢
  • 1970-01-01
  • 2010-10-03
  • 2014-06-11
  • 2022-01-08
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
相关资源
最近更新 更多