Я пытаюсь написать функцию тестирования производительности, которая может принимать любую функцию, запускать ее 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, game, gameState);// gameState будет иметь параметры
. Выдает следующее: Ошибка типа: Ошибка # 1034: Ошибка приведения типа: невозможно преобразовать [] @ 2f46491 в g2d.GameStateat Function / http://adobe.com/AS3/2006/builtin::call()
Похоже, game или gameState не будут действительными экземплярами, но они определенно есть.Поэтому я предполагаю, что он каким-то образом не знает, к какому объекту принадлежит метод, который должен быть проверен, и выдает эту ошибку.
Есть идеи?