1
我正在嘗試編寫一個性能測試函數,它可以接受任何函數,運行X次並吐出該函數在AS3中運行需要多長時間。如果一個函數沒有使用任何參數,它就會工作得很好,否則會出現錯誤。將參數傳遞給函數引用?
下面的代碼:
public static function testFunction(targetFunction : Function, object : Object, ... parameters)
{
var iterations : int = 10000;
var i : int = 0;
var time0 : Number = 0;
var time1 : Number = 0;
if (parameters.length == 0)
{
time0 = getTimer();
for (i = 0; i < iterations; ++i)
{
targetFunction();
}
time1 = getTimer();
}
else
{
time0 = getTimer();
for (i = 0; i < iterations; ++i)
{
targetFunction.call(object, parameters);
}
time1 = getTimer();
}
trace("Took " + (time1 - time0) + "ms to complete " + iterations + " iterations");
}
這只是正常: testFunction(timelineMethod)
但是這樣的事情: testFunction(game.addGameState,遊戲,遊戲狀態); // gameState將是參數
引發此錯誤: TypeError:錯誤#1034:類型強制失敗:無法將[] @ 2f46491轉換爲g2d.GameState。 at功能/ http://adobe.com/AS3/2006/builtin::call()
看來遊戲或gameState不是有效的實例,但他們肯定是。所以我假設它不知道要測試的方法屬於哪個對象,並拋出這個錯誤。
任何想法?