是否可以将 MXML 作为参数(XML 参数)从外部应用程序传递并动态加载到 Flash Player 中以创建页面。例如
将 xml = <mx:canvas><mx:label text="hello" /></mx:canvas> 传递给 Flex 和 flex 应该创建带有标签控件的画布。有没有相关的例子。
谢谢
是否可以将 MXML 作为参数(XML 参数)从外部应用程序传递并动态加载到 Flash Player 中以创建页面。例如
将 xml = <mx:canvas><mx:label text="hello" /></mx:canvas> 传递给 Flex 和 flex 应该创建带有标签控件的画布。有没有相关的例子。
谢谢
需要先将 MXML 代码编译为 ActionScript,然后 Flash Player 才能对其执行任何操作。Flash Player 在运行时不解释 MXML。
你想做的事情是不可能的。就像 brd6644 所说,mxml 被编译成 swf 中的字节码,由 flash 播放器解释。Flash 播放器不理解 mxml(甚至是 actionscript)。
话虽如此,有一个可用于动态 MXML 的 JSP 库。看这里:
http://www.adobe.com/devnet/flex/articles/server_perf_05.html
该链接很旧,现在我似乎找不到更新的链接,但我知道该项目仍然存在。我相信它实际上仍然是 ColdFusion 的一部分。它允许您创建动态 mxml,该 mxml 会根据请求编译 JIT。它当然会因此而对性能产生重大影响,但如果您需要动态 MXML,它是一种选择。
当我找到它时,我会用更好的链接更新这个评论。
只需将组件的属性存储到 XML 并放置一个 className 属性,这样如果您加载 XML,您就可以使用一个函数将 XML 的属性设置为您创建的组件的属性,这将在您的 className 属性中确定
我最初的猜测是否定的,它仍然是“XML”类型,并且 Actionscript 3 中没有“eval”。我快速搜索了一下,我不得不说不,这是不可能的。
然而,我在我创建的应用程序中做了类似的事情。
我所做的是将对象类型和一些属性(x、y、宽度、高度等)存储在数据库中。此数据从远程对象调用返回,然后在运行时创建这些对象,这可以获得您想要实现的类似效果。
例如:
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);
}
}