没有Flex Framework / Components的MXML

时间:2009-01-11 22:10:31

标签: flex flash mxml mxmlc

Flex编译器可以编译不包含任何Flex组件字节码的“纯AS3”SWF文件。所以,

是否可以创建一个自定义组件框架(用于代替Flex框架),仍然可以使用MXML(读取:标记)进行可视化布局,并编译为SWF而不依赖于Flex框架本身?

2 个答案:

答案 0 :(得分:8)

是的,这是可能的。您的MXML文件基本上只是指定类的一种不同方式。您可以通过编译项目并向-compiler.keep-generated-actionscript=true提供mxmlc来查看mxml文件归结为什么。

bar.mxml:

<?xml version="1.0" encoding="utf-8"?>
<flash:Sprite xmlns:flash="flash.display.*">
</flash:Sprite>

使用mxmlc -compiler.keep-generated-actionscript=true bar.mxml进行编译后,会变为以下内容。

生成/ bar-generated.as:

package {
    import flash.display.Sprite;
    // bunch of imports
    public class bar extends Sprite {
        public function bar() { super(); }
    }
}

答案 1 :(得分:3)

有两种不同的编译器:一种用于将ActionScript代码编译为AVM字节码,另一种(mxmlc)将MXML文件编译为ActionScript代码,然后由第一个编译器编译。如果要查看生成的AS3代码,请将“-keep”参数传递给MXML编译器。

从理论上讲,你可以做你的建议。我的猜测是mxmlc非常重视UIComponent类的功能,所以你可能不得不对mxmlc进行一些攻击,以免它在非UIComponent类上发挥作用。即使如此,由于[Bindable] /数据绑定之类的东西使用了Flex框架功能(不是普通的Flash Player / AVM功能),您将重写大量代码。