0

据我了解,我有两种控制画布重绘的方法,因此它们不会在没有动画的情况下简单地持续运行。

设置一个检查条件的函数:

createjs.Ticker.addEventListener("tick", tick);
var redrawOn = false;
function tick(event) {
    if (redrawOn) {
        stage.update(event);
    }
}

或者,侦听补间对象的“更改”事件并在该事件上重绘舞台:

var myTween = createjs.Tween.get(resetButton).to({'alpha': 1}, 500);
myTween.on('change', function(){
    stage.update();
});

它们看起来都很乏味,但第二个似乎更容易。一个比另一个性能更好吗?如果是第二个,有没有办法简单地将 Tween 类扩展为总是这样做?为什么不是这种情况?

编辑:基本上我试图避免这样做:

createjs.Ticker.addEventListener("tick", stage);

因为我读的不好。所以,我有几个应用程序使用它,现在我试图在滴答期间打开和关闭重绘,它变得一团糟......由于交互性,一些功能正在关闭滴答->重绘其他动画未完成。这是一场噩梦。

4

1 回答 1

2

如果你有一个补间,那么当它发生变化时更新阶段是有意义的,但如果你有多个,你最终会得到额外的不必要的更新。

结合您的两种方法可能是有意义的,并在补间更改中设置为redrawOntrue然后在设置此值时更新舞台。

最喜欢的 据我所知,我有两种控制画布重绘的方法,因此它们不会在没有动画的情况下简单地持续运行。

设置一个检查条件的函数:

createjs.Ticker.addEventListener("tick", tick);
var redrawOn = false;
function tick(event) {
    if (redrawOn) {
        stage.update(event);
    }
    redrawOn = false;
}

var myTween = createjs.Tween.get(resetButton).to({'alpha': 1}, 500);
myTween.on('change', function(){
    redrawOn = true;
});

关于一般的舞台收报机,它可能很糟糕,但并不是天生就很糟糕。如果您的应用程序更改很多或具有很多复杂性,则每次更新一次阶段是有意义的。有比删除阶段标记更好的方法来优化您的应用程序。比如缓存复杂的内容,使用SpriteSheets,降低Graphic复杂度等。

希望有帮助。

于 2016-09-29T15:30:11.547 回答