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不是有效的实例,但他们肯定是。所以我假设它不知道要测试的方法属于哪个对象,并抛出这个错误。
任何想法?