我正在使用一些HTML 5功能製作一個小俄羅斯方塊克隆,並且我遇到了一些困難。哪個更快 - 堆疊畫布或像素操作?
我的tetrominos不是由塊組成 - 他們有陰影和陰影,這取決於旋轉,因此每個都是它自己的圖像。這意味着每次遊戲狀態發生變化時,我都無法使用正常的「重繪所有內容」,因爲這意味着要記錄所有的丟棄歷史記錄,並在我想清除一條線時「重播」它。
所以我的選擇是:
1)創建堆疊在彼此的兩個畫布元素。後面的那個是「板子」形象。上面的那個是件帆布,我可以在那裏輕鬆地切片和重新排列。雖然這感覺非常黑客,因爲我想把所有東西放在一個畫布元素中。
2)創建一個「繪圖」上下文和一個「緩衝區」上下文。在緩衝區上下文中,我擁有所有的部分,並且可以自由地操作它,並且當需要將緩衝區繪製到屏幕上時,我會獲取ImageImage,循環遍歷所有像素,然後將它們合成到電路板圖像上。然後我用putImageData將它寫入「繪圖」上下文中。出現這種麻煩是因爲我無法找到一種方法來獲取ImageData結構並將其組合到canvas元素上(可以使用使用drawImage的ImageElements來完成此操作,但drawImage不會使用ImageData結構)。
這兩種解決方案對我來說都不是很優雅。
感謝
好吧,那就是我所做的。謝謝! – Nick
考慮使用Easeljs。 Easeljs緩存您的顯示列表,以便只有已經失效的分支纔會重新渲染。所有其他人被繪製爲一個位圖(非常快);但是,即使使用該功能,分層繪圖也是分配渲染負載的最佳方式。 – CharlesTWall3