ActionScript 3.0中的动态变量

时间:2009-06-20 17:24:00

标签: actionscript-3

所以.... eval()无从谈起,有什么想法吗?我也不知道如何在actionscript 3中使用“this”表达式或set()(我好像找不到任何完整的引用),只是通过php文件说一个多变量(test1,test2,test3,。 ..)通过“echo”发送,flash应用程序如何收到它?我试图不在mysql上使用xml来flash到flash应用程序。简单地说如何将字符串更改为变量?

示例

(在as3-actions框架面板中)

function datagridfill(event:MouseEvent):void{
   var varfill:URLVariables = new URLVariables();
   varfill.tell = "do it";
   var filler:URLRequest = new URLRequest();
   filler.url = "http://127.0.0.1/flashdbas3/sendin.php";
   filler.data = varfill;
   var filling:URLLoader = new URLLoader();
   filling.dataFormat = URLLoaderDataFormat.VARIABLES;
   filling.load(filler);
   filling.addEventListener(Event.COMPLETE, datain);

   function datain(evt:Event){
      var arraygrid:Array = new Array();
      testing.text = evt.target.Name2 // worked
      // just say i = 1
      i=1;
      arraygrid.push({Name:this["evt.target.Name"+i],
                      Test:this.["evt.target.Test"+i]}); // error
      //or
      arraygrid.push({Name:this["Name"+i],
                      Test:this.["Test"+i]}); // error too
      // eval() noexistent, set() didn't worked on actions frame panel
      //?????
   }   
};

我希望非常清楚。

2 个答案:

答案 0 :(得分:3)

如果我理解你的问题,你可以使用这个[varName]。

因此,如果varName是一个包含应该是变量名称的字符串的变量,那么您可以像这样设置和读取该变量:

this[varName] = "someValue";
trace(this[varName]);

更新

在你的例子中,你可以尝试:evt.target [“Test”+ i]而不是Test:this。[“evt.target.Test”+ i]

答案 1 :(得分:0)

如果您有一组要与值关联的字符串,则标准AS3方法是将对象用作哈希表:

var o = {}
o["test1"] = 7
o["test2"] = "fish"
print(o["test1"])