【问题标题】:Flash AS3 animation in Mac vs WindowsMac 与 Windows 中的 Flash AS3 动画
【发布时间】:2010-01-12 15:24:07
【问题描述】:

我正在制作一个简短的动画故事,它有一个可擦洗的时间线和章节标题。我使用 TimelineMax 对其进行排序。在大多数情况下,它工作正常。不过,我看到一些奇怪的行为出现了:精灵消失,功能停止响应用户输入,精灵的接缝变得透明——所有小问题,但很难确定,因为它们只发生在 Mac 中。

所以我想知道 Flash 有什么问题,为什么它在 Mac 上会出现问题?

【问题讨论】:

    标签: windows flash actionscript-3 macos animation


    【解决方案1】:

    我经常在工作时在 Windows 上处理相同的项目,然后在家里使用 Mac。与 Windows 相比,我还看到 Mac 上的一些差异。我发现用于 Mac 的各种 Flash Player 版本通常比 Windows 播放器慢,而且我在 Mac 上看到了一些在 Windows 上没有发生的奇怪行为。

    在大多数情况下,我将其范围缩小到 AS3 的垃圾收集。当播放器确定一个对象在电影中不再具有引用时,就会发生垃圾收集,因此它会删除该对象以释放内存。假设你有一个这样的类方法:

    function myTweenFunction():void {
        var myTween:Tween = new Tween(myDisplayObject, 'x', Strong.easeInOut, 0, 500, 10, true);
        myTween.addEventListener(TweenEvent.MOTION_FINISH, onMyTweenDone);
    }
    

    上述方法将在 10 秒内将 myDisplayObject 的 x 值从 0 补间到 500。补间完成后,它应该触发 onMyTweenDone 方法(未显示)。但是,myTween 是在 myTweenFunction 内部创建的,因此它只存在于 myTweenFunction 的范围内。当 myTweenFunction 完成时,电影中的任何对象都不再引用 myTween 对象,因此它成为垃圾回收的候选对象。您将开始看到补间,但在某个时间点它会在达到 500 之前停止,并且完成事件不会触发。这意味着 myTween 已被销毁。要解决这个问题,myTween 需要是类的成员,或者只需要在类函数之外有一个引用。

    回到 Mac 与 Windows 的问题上,我发现在 Mac 上运行时创建的对象上的垃圾收集比在 Windows 上更明显。垃圾收集发生在 Windows Flash Player 中,但补间和其他事件可能在垃圾收集发生之前完成,因为 Windows Flash Player 具有更好的性能。如果 Mac Flash Player 速度较慢(即相同的补间可能需要更长的时间),则垃圾收集可能会在补间完成之前发生。垃圾收集不会像动画那样逐帧发生;这是一个随时可能发生的后台进程,如果有足够的内存供 Flash Player 使用,则根本不会发生。你的 Windows 机器可能有一堆 RAM,而且电影可以在不需要垃圾收集的情况下正常播放,所以 myTween 可能永远不会消失。如果您的 Mac 内存较少,或者您同时打开了大量应用程序并且 Flash Player 内存分配受到限制,那么 Flash Player 将更频繁地执行垃圾收集。

    我也使用了 TimelineMax,并且有一个默认开启的自动垃圾收集功能。尝试关闭它并在 Mac 上测试。

    最终,您应该在设计项目时假设用户的内存可能非常有限,因此需要相应地创建、引用和收集对象。

    【讨论】:

      【解决方案2】:

      我在插件版本之间遇到了一些渲染问题,尤其是在处理透明度、字体和嵌入设置时。

      如果您在网络浏览器中执行此操作,请尝试使用 WMODE 嵌入设置,看看您的结果是否会发生变化。

      【讨论】:

        猜你喜欢
        • 2012-08-09
        • 2016-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 2012-07-29
        • 1970-01-01
        • 2012-08-18
        相关资源
        最近更新 更多