在下面的示例中,第一个跟踪给出了节点上的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