停止和重新启动CreateJs动画

7

我想知道如何停止整个CreateJs画布动画以及如何稍后重新启动它。

当用户看不到画布时,我希望节省计算能力和内存。

有人知道怎么做吗?

提前感谢您的帮助。

2个回答

7

只需移除Ticker上的监听器。例如:

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

如果你想重置从Flash导出的整个动画,你有几个选择:
1. 重新实例化主时间轴。你需要查看输出代码以获取主时间轴符号的名称,但通常基于FLA名称(例如,一个名为“test.fla”的FLA将其主时间轴符号命名为“Test”)。
``` stage.removeChildAt(0); stage.addChild(new lib.Test()); ```
2. 你可以使用gotoAndPlay(0)。不过这要求所有子MovieClip都设置为Graphic实例,因为MC会独立于其父级播放。
``` stage.getChildAt(0).gotoAndPlay(0) ```

谢谢您的回复。我已经尝试了那个路径,但不幸的是它不能在重新启动动画之前倒回它。 - Andrea Silvestri
啊,抱歉,我没有意识到你还想重置动画。这取决于动画的工作方式。这只是来自Flash的直接输出吗? - gskinner
是的,没错。顺便说一下,目前我正在使用导出的HTML在一个IFRAME中。当我想停止动画时,我会移除tick事件;当我想重新开始时,我会移除SRC属性,然后重新附加它。 - Andrea Silvestri
我明白了。我会尝试一下并告诉你结果的。谢谢! - Andrea Silvestri

1
你需要从舞台中删除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(); 

    }

谢谢您的回复,但我不再使用这个库了。 - Andrea Silvestri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接