【问题标题】:Understanding Flash SWC's imported into Flex Builder 3 and key framed animation了解 Flash SWC 导入 Flex Builder 3 和关键帧动画
【发布时间】:2010-03-25 00:58:29
【问题描述】:

我试图了解我从 Flash CS4 导入 Flex Builder 3 的 SWC 中发生了什么。具体来说,我使用由 Designer 提供的 SWC 作为自定义预加载器(子类 DownloadProgressBar)的动画。

我想了解的问题是,一旦触发了 FlexEvent.INIT_COMPLETE,我会通过运行以下命令删除 swc 来进行清理:

removeChild(myPreloader);
myPreloader = null;

即使我删除了这个(这是成功的,因为我通过比较 this.numChildren 在调用前后进行了检查),关键帧动画仍然继续运行(不可见)。设计师在动画的时间线中放置了一条轨迹(在 Flash 中)已检测到这一点。

谁能告诉我为什么,即使我从子类 DownloadProgressBar 中删除了动画,它仍然继续运行?

此外,在导入 SWC 以管理从 Flash 端清理资源时是否是标准做法(很像在 obj-c 中释放内存)。我发现从 Flex 端移除子元素并不会停止动画,这很不直观。

对此的任何线索将不胜感激。

【问题讨论】:

    标签: apache-flex flash actionscript-3 animation swc


    【解决方案1】:

    基本上,您的 SWC 文件只不过是一个包含 SWF 的 ZIP。因此,您正在做的是从舞台上删除一个 MovieClip,但它不会停止或卸载它。你可能想试试

    myPreloader.stop();
    

    停止动画和

    myPreloaderLoader.unload();
    

    在您从舞台上移除项目以释放​​内存之后。

    但请注意:Flash Player 垃圾收集并不总是正常工作。如果在 myPreloader 中运行任何类型的 ActionScript,它很可能会继续运行,并且在垃圾收集期间将被忽略。通常最好为所有 AS 类包含一个clear()destroy() 方法,并在Event.REMOVED_FROM_STAGE 上调用它。 这必须由您的设计师同事完成,但根据我的经验,这是最干净的程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 2011-02-13
      • 2011-05-05
      相关资源
      最近更新 更多