【问题标题】:Stop and Restart CreateJs animation停止和重新启动 CreateJs 动画
【发布时间】:2015-10-03 09:05:19
【问题描述】:

我想知道如何停止整个 CreateJs 画布动画以及以后如何重新启动它。 我想在用户看不到画布时节省计算能力和内存。

有人知道吗?

提前谢谢你

【问题讨论】:

    标签: animation canvas html5-canvas createjs


    【解决方案1】:

    只需删除 Ticker 上的侦听器即可。例如:

    createjs.Ticker.removeEventListener("tick", myStageOrTickFunction);
    // then add it back later to unpause:
    createjs.Ticker.addEventListener("tick", myStageOrTickFunction);
    

    如果您想重置从 Flash 导出的整个动画,您有以下几种选择:

    1. 您可以重新实例化主时间线。您需要查看输出代码以获取主时间线符号的名称,但它通常基于 FLA 名称(例如,名为“test.fla”的 FLA 将其主时间线符号命名为“测试”)。

    stage.removeChildAt(0);

    stage.addChild(new lib.Test());

    1. 您可以使用gotoAndPlay(0)。这要求所有子 MovieClip 都设置为 Graphic 实例,因为 MC 独立于其父级播放。

    stage.getChildAt(0).gotoAndPlay(0)

    【讨论】:

    • 感谢您的回复。我已经尝试过该路径,但不幸的是它在重新启动之前不会倒带动画
    • 啊。抱歉,我没有意识到你也想重置动画。这样做很大程度上取决于动画的工作方式。这只是 Flash 的直接输出吗?
    • 是的。顺便说一句,目前我在 IFRAME 中使用导出的 HTML。当我想停止动画时,我删除了 tick 事件,当我想重新开始时,我删除了 SRC 属性,然后重新附加它。
    • 我明白了。我会试试,让你知道结果。谢谢!
    【解决方案2】:

    您需要从 Stage 中移除 exportRoot,然后重新添加

    function restart()
        {
    
    
            stage.getChildAt(0).gotoAndPlay(0);
            stage.removeChildAt(0);
            createjs.Ticker.removeEventListener("tick", stage);
            createjs.Sound.stop();
    
            exportRoot = new lib[Object.getOwnPropertyNames(lib)[Object.getOwnPropertyNames(lib).length-3]]();
            stage.addChild(exportRoot);
    
            createjs.Ticker.addEventListener("tick", stage);
            stage.update(); 
    
        }
    

    【讨论】:

    • 感谢您的回复,但我不再使用这个库了。
    猜你喜欢
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多