2012-03-08 61 views
0

在下面的示例中,第一个跟踪给出了节点上的xml数据,但第二个跟踪没有。这是AS3。我将如何使用变量来执行与内联点符号相同的操作?使用XML点表示法的Flex字符串字符串

var x:String = "animXML.home.version"; 
trace(animXML.home.version); // this works 
trace([x]);     // this does not 

感谢

+0

trace(eval(x))也许? – Eduardo 2012-03-08 18:53:23

+0

嗨Eduardo,eval不支持AS3感谢您的建议。 – Jerry 2012-03-08 18:55:26

+0

正如您所定义的那样,x是字符串*“animXML.home.version”*。另外,你是什么意思*“如何使用一个变量做同样的内联点符号”*? – sch 2012-03-08 19:02:05

回答

1

不知道你正在努力实现,但这将输出同样的事情:

var x:String = animXML.home.version as String; 
trace(animXML.home.version); // this works 
trace(x);      // this works 

更新(完整的脚本):

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> 

    <fx:Declarations> 
     <fx:Model id="animXML"> 
      <root> 
       <home> 
        <version>Version 1</version> 
       </home> 
      </root> 
     </fx:Model>  
    </fx:Declarations> 

    <fx:Script> 
     <![CDATA[ 
      protected function clickHandler(event:MouseEvent):void 
      { 
       var x:String = animXML.home.version as String; 
       trace(animXML.home.version); // this works 
       trace(x);      // this works 
      } 

     ]]> 
    </fx:Script> 

    <s:Button label="test" click="clickHandler(event)" /> 

</s:Application> 

点击“测试“按钮给出以下输出:

Version 1 
Version 1 
+0

你好,实际上这是行不通的,因为字符串是一个节点的XML点符号,所以第一个跟踪实际上去了XML并输出节点数据,上面的第二个跟踪只会输出x字符串。 – Jerry 2012-03-08 23:09:35

+0

我用完整的代码更新了答案,以便您可以看到它的工作原理,如果这不是您想要的,请解释。希望有所帮助。 – 2012-03-08 23:18:08

+0

不错的工作,但我的情况是不同的遗憾。由于xml在mxml中,因此第二条跟踪工作在上面。在我的情况下,XML正从外部XML文件读入,并且有一个Bindable变量被分配给它。当我创建我的问题时,我尝试尽可能简化问题,但我没有想到有人在做你所做的工作来解决问题,又一次很好的工作,但我仍然必须找出一种方法来使用点符号在运行时进行评估,而不是编译时间。谢谢。 – Jerry 2012-03-09 15:37:42