Не могу вызвать функцию изнутри объекта после сохранения с SharedObject - PullRequest
0 голосов
/ 26 апреля 2018

tl; dr --- Я пытаюсь создать объект и получить имя функции внутри этого объекта, затем сохранить объект, загрузить его позже и иметь возможность вызывать функцию, например, myFunction onMain.as , основанный на obj.fun (), где obj.fun = myFunction или obj.fun = "myFunction" ;

Iсоздать глобальную переменную

var master = {};

Я создаю объект таким образом

createMyObject():Object
{
  obj = {
  name:"myObject",
  fun:myFunctionInMain
  }
return 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 голосов
/ 26 апреля 2018

Я думаю, что нашел это.

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

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

Кажется, работает.

...