伊莉討論區
標題:
as3 關於gotoAndStop()的效能問題
[打印本頁]
作者:
brucejwo
時間:
2012-7-5 11:13 AM
標題:
as3 關於gotoAndStop()的效能問題
我最近再用Flash as3寫一個踩地雷的遊戲
基本寫法是用一個方格的物件排列起來,加入滑鼠點擊的監聽
在展開沒有炸彈的範圍部分(周圍都沒有炸彈的話會自動把周圍的格子都開起來),我原本也是用遞迴的寫法
但發現效能非常之差,當要開的格數一多,在點擊下去之後便會延遲數秒
我原本以為是因為遞迴本身效能差的緣故,所以我後來試著換了幾種寫法
像是預先算好空白沒炸彈的區域,給他上個編號,這樣一但需要開啟這部分區域時就可以直接把同編號的打開
但問題來了,即使我這麼做也沒辦法提升效率@@
幾經測試後我發現似乎是gotoAndStop這個方法的問題!?
我的方格物件是第一影格是平常的狀態,第二影格是被打開的狀態...etc
所以格子被點開就是切換到第二個影格(block.gotoAndStop(2))
當場景上有多達幾百個物件同時要切到第二影格時,就開始lag了....
我後來做了如下的測試
//這邊先宣告一個二維陣列存放方格物件
var blockArray:Array = new Array();
for(var i=0; i<20; i++)
{
blockArray[i] = new Array(); //將其宣告為二維陣列
for(var j=0; j<20; j++)
{
var block:_Block = new _Block(); //踩地雷中的方格物件
blockArray[i][j] = block;
stage.addChildAt(blockArray[i][j],0);
}
}
//把每個方格都移到第二影格
for(var i=0; i<20; i++)
for(var j=0; j<20; j++)
blockArray[i][j].gotoAndStop(2);
↑就是這個步驟,就會讓程式延遲好久
當然這段程式碼省略了很多跟問題無關的東西(像是格子的排列和座標等)純粹只為測試
我主要的問題就是.......
原來gotoAndStop(),切換影格是一個這麼吃效能的動作嗎???
如果真是如此,那我要寫個踩地雷遊戲有什麼好方法來提升效能嗎?
歡迎光臨 伊莉討論區 (http://a407.file-static.com/)
Powered by Discuz!