使用SharedObject保存后,无法从对象内调用函数

时间:2018-04-26 01:40:52

标签: function actionscript-3 return

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

我非常感谢你们在这里有任何见解......我一直在对象内部调用函数已经有一段时间了,但是现在我想保存和加载,我发现这不会像这一点。

1 个答案:

答案 0 :(得分:1)

我想我找到了它。

var functionName:String = master.myArray[0].fun; // where master was saved in save.data.master 

var newFun:Function = this[functionName];
newFun();

似乎工作。