据我了解,我有两种控制画布重绘的方法,因此当没有任何动画时,它们不会简单地运行。
设置检查条件的函数:
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);
因为我读错了。所以,我有几个应用程序使用这个,现在我试图在打勾期间打开和关闭重绘,它变成了一个真正的混乱...由于交互性,一些功能正在改变滴答 - >重绘而其他动画尚未完成。这是一场噩梦。
答案 0 :(得分:2)
如果你有一个补间,那么当它改变时更新阶段是有道理的,但是如果你有多个补间,那么你最终将得到额外的更新,这是不必要的。
组合两种方法可能有意义,并在补间更改中将redrawOn
设置为true
,然后在设置此值时更新阶段。
喜爱 据我了解,我有两种控制画布重绘的方法,因此当没有任何动画时它们不会一直运行。
设置检查条件的函数:
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缓存复杂内容,降低图形复杂性等。
希望有所帮助。