【问题标题】:How to unload cleanly an Adobe Captivate SWF from Flash Player 9 (not 10)如何从 Flash Player 9(不是 10)干净地卸载 Adob​​e Captivate SWF
【发布时间】:2009-11-13 21:01:05
【问题描述】:

为什么 Adob​​e 不听从他们自己的建议,让 Captivate swf 监听它自己的 UNLOAD 事件,并清理它的所有计时器、事件监听器、外部引用等。

我发现它一旦使用加载程序加载,就很难从 Flash 播放器的内存中获取 Adob​​e Captivate swf。显然,unloadAndStop 方法在 Flash Player 9 中不可用,因此请不要提及,除非您拥有可在 Flash Player 9 中工作的方法的等效动作脚本源代码。

我尝试将 Loader.content["rdcmndRewindAndStop"] 设置为 1,以使 Captivate 文件倒带并停止。这很有效,但是我在卸载内容后在调试器输出中看到,内容仍然在内存中响应某些事件:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at captivate.Veela_AS3::rdAVM1SwfLoader/getLoadBase()
at captivate.Veela_AS3::rdAVM1SwfLoader/onload()
at captivate.Veela_AS3::rdAVM1SwfLoader/initItemVariables()
at captivate.Veela_AS3::rdItem/frame1()

【问题讨论】:

    标签: flash memory loader adobe-captivate


    【解决方案1】:

    即使使用 Flash Player 10 和 unloadAndStop 方法,除了加载迷人的电影、将内存使用情况追踪到文本字段并强制垃圾回收之外什么都没有发生,我可以看到该迷人的文件不会卸载,即使在最简单的情况

    我正在考虑放置这些迷人的文件并从单独的安全域、服务器的子域加载它们,并将尝试一下。如果有人成功了,我想知道。

    谢谢,

    kb

    【讨论】:

    • 5 年后,在谷歌搜索期间,我再次遇到一个问题并意识到我是作者,这很糟糕。令人遗憾的是,迷人的电影在 2014 年仍然无法正常卸载。
    【解决方案2】:

    最近不得不处理同样的问题,我的任务是更新一个同样用 Flash 制作的 Flash“内容播放器”。问题是他们现在希望它播放已作为 SWF 发布的 Captivate 内容。

    我通过将 Captivate 卸载问题加载到他们自己的另一个 Flash 文件的副本中来修复它们。

    所以我有:

    • ContentPlayer.fla
    • CaptivateLoader.fla
    • Captivate.cptx

    任何时候需要加载新的 Captivate,ContentPlayer 都会加载 CaptivateLoader.swf 的新副本,并告诉它加载 Captivate.swf。当 contentPlayer 卸载之前的 CaptivateLoader.swf 时,它加载的所有内容都会随之销毁。

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多