2016-09-28 172 views
0

據我所知,我有兩種方法來控制畫布重繪,所以當沒有任何動畫時它們不會簡單地運行。createjs優化畫布重繪

設置,檢查條件的功能:

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

或者聽一個Tween對象的「變化」事件和重繪在該事件的階段:

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

他們都似乎乏味,但第二個似乎更容易。比另一個更高效嗎?如果第二個是,是否有辦法簡單地擴展Tween類來總是這樣做?爲什麼不會這樣呢?

編輯:基本上我試圖避免這樣做:

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

因爲我看過它的壞。所以,我有幾個應用程序使用這個,現在我試圖打開和關閉重繪剔刻過程中,它成爲一個真正的混亂......由於交互性,一些功能正在測量剔 - >重繪關閉其他動畫沒有完成。這是一場噩夢。

回答

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,減少圖形複雜度等。

希望有所幫助。

+0

我會盡量使用你的建議。感謝您的幫助! –