AS#3组织从PhP加载的变量

时间:2013-03-27 05:12:12

标签: php actionscript-3 flash flash-cs5

我遇到了如何在Flash中组织我的变量的问题,这些变量来自PHP脚本。理想情况下,我希望它们采用数组类型格式,因此我可以遍历它们。下面是一些代码。

    function completeHandler(evt:Event){ // after loading the php
    var symbolsArray:Array = new Array()                      
    symbolsArray.push(evt.target.data.symbol_1);// php variable named: symbol_1, symbol_2
    trace(evt.target.data); 
    }

以上是allworking,PHP变量列为symbol_1,symbol_2等

不是将每个变量分别推入数组中,而是想要一个循环,而不是:

    function completeHandler(evt:Event){ 
    var symbolsArray:Array = new Array() 
    var counter =1                     
    symbolsArray.push(evt.target.data.symbol_+counter); this is the issue
    trace(symbolsArray[0]); //returns NaN 
    }

下面是php返回vars to flash给出一个想法:

      $returnVars['symbol_1'] = $virtualReel1[0];
      $returnVars['symbol_2'] = $virtualReel1[1];
      $returnVars['symbol_3'] = $virtualReel1[2];
      $returnVars['symbol_4'] = $virtualReel2[0];
      $returnVars['symbol_5'] = $virtualReel2[1];
      //etc
      $returnString = http_build_query($returnVars);
      echo $returnString;

2 个答案:

答案 0 :(得分:2)

 symbolsArray.push(evt.target.data["symbol_"+counter]);

如果需要动态查询对象的属性,可以通过字符串键将其作为数组或字典来解决,该字符串可以动态形成。适用于任何事情。

答案 1 :(得分:1)

返回的数据可以被视为一个Object(包含Objects),因此您可以像这样循环:

function completeHandler(evt:Event)
{
    var symbolsArray:Array = new Array();
    for each (var obj:Object in evt.target.data)
    {
        symbolsArray.push(obj);
    }
}

如果您知道所有项目都是相同类型,则可以投射该对象。例如:如果所有数字:

symbolsArray.push(Number(obj));

Or Strings:

symbolsArray.push(String(obj));