是否可以将MXML作为参数(XML参数)从外部应用程序传递,并动态加载到Flash Player中以创建页面。例如
传递xml =< mx:canvas>< mx:label text =“hello”/>< / mx:canvas> Flex和flex应该创建带有标签控件的画布。有没有与之相关的例子。
感谢名单
答案 0 :(得分:3)
在Flash Player可以对其执行任何操作之前,需要将MXML代码编译为ActionScript。 Flash Player在运行时不会解释MXML。
答案 1 :(得分:1)
你想要做的事是不可能的。就像brd6644所说的那样,mxml被编译成swf中的字节码,由flash播放器解释。 flash播放器无法理解mxml(甚至是actionscript)。
话虽如此,有一个JSP库可用于动态MXML。见这里:
http://www.adobe.com/devnet/flex/articles/server_perf_05.html
这个链接很旧,而且现在我似乎无法找到更新的链接,但我知道该项目仍然存在。我相信它实际上仍然是ColdFusion的一部分。它允许您创建动态mxml,它在请求时获得JIT编译。它当然会因此而受到很大的性能影响,但是如果你需要动态MXML,那么这是一个选择。
当我找到它时,我会用更好的链接更新此评论。
答案 2 :(得分:1)
只需存储该属性即可 组件到XML并放入className 属性,以便加载XML时 你可以有一个功能来设置 XML的属性 您创建的组件的属性 这将在你的确定 className属性
答案 3 :(得分:0)
我最初的猜测是否定的,它仍然是“XML”类型,并且在Actionscript 3中没有“eval”。我做了一个快速搜索,我不得不说不,这是不可能的。< / p>
但是,我在我创建的应用程序中做了类似的事情。
我所做的是在数据库中存储对象类型和一些属性(x,y,width,height等)。此数据从远程对象调用返回,然后在运行时创建这些对象,这可以获得您尝试实现的类似效果。
例如:
var resultAC:ArrayCollection = event.result as ArrayCollection;
var tmpCanvas:Canvas;
for(var i:int = 0; i < resultAC.length; i++)
{
if(resultAC.getItemAt(i).type == "Canvas")
{
tmpCanvas = new Canvas();
tmpCanvas.x = resultAC.getItemAt(i).x;
tmpCanvas.y = resultAC.getItemAt(i).y;
...
parent.addChild(tmpCanvas);
}
}