в вашем примере вы вызываете метод successFunction внутри определения, а не когда код должен быть выполнен. Вы должны передать ссылку на метод, а не вызывать его. Взгляните на следующие примеры. Если вы используете метод apply, вы можете передать аргументы как Array.
* Николай
Справочник по функциям и вызов функции
function myFunction(parameter:String):String
{
return 'hello '+parameter;
}
var myFunctionReference:Function = myFunction;
trace(myFunctionReference); // function Function() {}
trace(myFunctionReference('world')); // 'hello world'
var myFunctionReturnValue:String = myFunction('moon');
trace(myFunctionReturnValue); // 'hello moon'
Рабочий пример
package
{
import flash.display.Sprite;
public class MethodTest extends Sprite
{
public function MethodTest()
{
trace('MethodTest Constructor');
trace('---');
invoke(successFunction,'first',{id:123,type:'foo'});
trace('---');
invokeByApply(successFunction,'second',{id:456,type:'bar'});
}
public function invoke(method:Function,someName:String, someObject:Object):void{
trace('MethodTest invoke');
method(someName,someObject);
}
public function invokeByApply(method:Function,...arguments):void{
trace('MethodTest invokeByApply');
method.apply(null,arguments);
}
public function successFunction(someName:String, someObject:Object):void{
trace('MethodTest successFunction');
trace('someName: '+someName);
for(var key:String in someObject)trace(key+': '+someObject[key]);
}
}
}