tl; dr ---我正在尝试创建一个对象并在该对象中包含一个函数的名称,然后保存该对象,稍后加载它,并能够调用该函数,例如 myFunction on Main.as ,基于obj.fun(),其中 obj.fun = myFunction 或 obj.fun =“myFunction” ;
我创建了一个全局变量
var master = {};
因此我创建了一个对象
createMyObject():Object
{
obj = {
name:"myObject",
fun:myFunctionInMain
}
return obj
}
然后我将obj推入数组
master.myArray.push(obj);
然后我保存
save.data.master = master;
然后我加载
master = save.data.master;
然后我跟踪我的对象名称:
trace(master.myArray[0].name) // output is correct "myObject" so the save and load worked
但是当我调用函数
时master.myArray[0].fun();
它说价值不是一种功能。
这个工作正常,直到我保存然后加载...就好像它没有将函数保存在对象中....所以我试图将函数放在引号中,在对象内部并保存字符串,但在保存之后我无法弄清楚如何从中调用该函数。
我试过
master.myArray[0][master.myArray[0]]() // didn't work
我试过
var fun:String = master.myArray[0]fun;
master.myArray[0][fun]() // didn't work
我试过
var fun:Function = master.myArray[0].fun;
fun(); // didn't work
我非常感谢你们在这里有任何见解......我一直在对象内部调用函数已经有一段时间了,但是现在我想保存和加载,我发现这不会像这一点。
答案 0 :(得分:1)
我想我找到了它。
var functionName:String = master.myArray[0].fun; // where master was saved in save.data.master
var newFun:Function = this[functionName];
newFun();
似乎工作。