2012-03-08 73 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