Canvas createjs优化画布重画

Canvas createjs优化画布重画,canvas,createjs,tweenjs,Canvas,Createjs,Tweenjs,据我所知,我有两种方法来控制画布重画,这样它们就不会在没有动画的情况下持续运行 设置检查条件的函数: createjs.Ticker.addEventListener("tick", tick); var redrawOn = false; function tick(event) { if (redrawOn) { stage.update(event); } } createjs.Ticker.addEventListener("tick", tick);

据我所知,我有两种方法来控制画布重画,这样它们就不会在没有动画的情况下持续运行

设置检查条件的函数:

createjs.Ticker.addEventListener("tick", tick);
var redrawOn = false;
function tick(event) {
    if (redrawOn) {
        stage.update(event);
    }
}
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;
});
或者,监听tween对象的“更改”事件,并在该事件上重新绘制舞台:

var myTween = createjs.Tween.get(resetButton).to({'alpha': 1}, 500);
myTween.on('change', function(){
    stage.update();
});
它们看起来都很乏味,但第二个似乎更简单。一个比另一个性能好吗?如果第二个是,有没有办法简单地将Tween类扩展为总是这样做?为什么现在还不是这样

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

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

因为我读到了它的坏处。所以,我有几个应用程序使用这个,现在我正试图打开和关闭在滴答声期间的重画,这将是一个真正的混乱。。。由于交互性,一些函数在其他动画未完成时关闭勾号->重画。这是一场噩梦。

如果你有一个tween正在进行,那么在舞台发生变化时更新舞台是有意义的,但是如果你有多个,你最终会得到不必要的额外更新

将这两种方法结合起来,在tween更改中将
重绘
设置为
,然后在设置此值时更新阶段

宠儿 据我所知,我有两种方法来控制画布重画,这样它们就不会在没有动画的情况下持续运行

设置检查条件的函数:

createjs.Ticker.addEventListener("tick", tick);
var redrawOn = false;
function tick(event) {
    if (redrawOn) {
        stage.update(event);
    }
}
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;
});
对于一个普通的舞台观众来说,它可能是坏的,但本质上并不坏。如果你的应用程序变化很大或很复杂,那么每次更新一次stage都是有意义的。有更好的方法来优化您的应用程序,而不是删除阶段标记。例如,缓存复杂内容、使用精灵表、降低图形复杂性等


希望这能有所帮助。

如果你有一个tween正在进行,那么在舞台发生变化时更新它是有意义的,但是如果你有多个,你最终会得到不必要的额外更新

将这两种方法结合起来,在tween更改中将
重绘
设置为
,然后在设置此值时更新阶段

宠儿 据我所知,我有两种方法来控制画布重画,这样它们就不会在没有动画的情况下持续运行

设置检查条件的函数:

createjs.Ticker.addEventListener("tick", tick);
var redrawOn = false;
function tick(event) {
    if (redrawOn) {
        stage.update(event);
    }
}
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;
});
对于一个普通的舞台观众来说,它可能是坏的,但本质上并不坏。如果你的应用程序变化很大或很复杂,那么每次更新一次stage都是有意义的。有更好的方法来优化您的应用程序,而不是删除阶段标记。例如,缓存复杂内容、使用精灵表、降低图形复杂性等


希望这能有所帮助。

我会尽量采纳你的建议。谢谢你的帮助!我会尽量采纳你的建议。谢谢你的帮助!