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