Flex:将MXML文件作为XML参数传递

时间:2009-03-03 01:56:59

标签: flex mxml

是否可以将MXML作为参数(XML参数)从外部应用程序传递,并动态加载到Flash Player中以创建页面。例如

传递xml =< mx:canvas>< mx:label text =“hello”/>< / mx:canvas> Flex和flex应该创建带有标签控件的画布。有没有与之相关的例子。

感谢名单

4 个答案:

答案 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);
      }
    }