在下面的示例中,第一個跟蹤給出了節點上的xml數據,但第二個跟蹤沒有。這是AS3。我將如何使用變量來執行與內聯點符號相同的操作?使用XML點表示法的Flex字符串字符串
var x:String = "animXML.home.version";
trace(animXML.home.version); // this works
trace([x]); // this does not
感謝
在下面的示例中,第一個跟蹤給出了節點上的xml數據,但第二個跟蹤沒有。這是AS3。我將如何使用變量來執行與內聯點符號相同的操作?使用XML點表示法的Flex字符串字符串
var x:String = "animXML.home.version";
trace(animXML.home.version); // this works
trace([x]); // this does not
感謝
不知道你正在努力實現,但這將輸出同樣的事情:
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
你好,實際上這是行不通的,因爲字符串是一個節點的XML點符號,所以第一個跟蹤實際上去了XML並輸出節點數據,上面的第二個跟蹤只會輸出x字符串。 – Jerry 2012-03-08 23:09:35
我用完整的代碼更新了答案,以便您可以看到它的工作原理,如果這不是您想要的,請解釋。希望有所幫助。 – 2012-03-08 23:18:08
不錯的工作,但我的情況是不同的遺憾。由於xml在mxml中,因此第二條跟蹤工作在上面。在我的情況下,XML正從外部XML文件讀入,並且有一個Bindable變量被分配給它。當我創建我的問題時,我嘗試儘可能簡化問題,但我沒有想到有人在做你所做的工作來解決問題,又一次很好的工作,但我仍然必須找出一種方法來使用點符號在運行時進行評估,而不是編譯時間。謝謝。 – Jerry 2012-03-09 15:37:42
trace(eval(x))也許? – Eduardo 2012-03-08 18:53:23
嗨Eduardo,eval不支持AS3感謝您的建議。 – Jerry 2012-03-08 18:55:26
正如您所定義的那樣,x是字符串*「animXML.home.version」*。另外,你是什麼意思*「如何使用一個變量做同樣的內聯點符號」*? – sch 2012-03-08 19:02:05