没有Flex框架/组件的MXML

3

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

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


这是什么动机?你想写自己的框架,比如OpenLaszlo吗? - airportyh
2个回答

8

是的,这是可能的。您的MXML文件本质上只是指定类的另一种方式。您可以通过编译项目并向mxmlc提供-compiler.keep-generated-actionscript=true来查看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编译后,它会变成以下内容。

生成的代码位于 generated/bar-generated.as 文件中。

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

2
你可以将编译器参数缩短为“-keep”。这样更容易记住。 - Josh Tynjala

3
有两种不同的编译器:一种用于将ActionScript代码编译为AVM字节码,另一种(mxmlc)将MXML文件编译为ActionScript代码,然后再由第一个编译器编译。如果您想查看生成的AS3代码,请将“-keep”参数传递给MXML编译器。
理论上讲,您提出的做法是可能的。我猜测mxmlc与UIComponent类的特性紧密相关,因此您可能需要对mxmlc进行一些修改,以使其不会在非UIComponent类上出现错误。即便如此,由于诸如[Bindable] /数据绑定之类的功能使用Flex框架特性(而不是纯Flash Player / AVM特性),因此您将需要重写大量代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接