在ActionScript项目中还真是不能使用mx包中的UI组件。


 


        ​​Adobe官方论坛上有一个帖子​​讲述了这个问题,大致意思是说:你要使用mx包中像Button这样的UI组件都是从UIComponent中继承的,需要被其他的Flex类实例化和管理。如果非要使用会很麻烦,你需要一个实现了ISystemManager的容器来放你的UI组件,这样你需要修改好几十个类来实现这个接口。


 


        这也就解释了为何很多Flash游戏项目中做用户界面都要使用fl包,而没见过使用mx包的。最后我自己总结了一下这几个包的关系(就像中学时候经常总结课本知识一样):


 


1、flash包是FlashPlayer的核心,fl包和mx包都是扩展自flash包


2、fl包用于Flash CS,mx包用于Flex Builder


3、在所有项目中都能使用flash包


4、在纯ActionScript项目和Flash CS项目中不能使用mx包,准确点说是不能使用mx包中,与UIComponent有关的包。其他的包貌似可以使用,不过我也没有都测试过,看到有ActionScript类使用mx包里类库的。(有待进一步研究)


5、Flex项目中是可以有ActionScript文件和类的,这里面可以使用mx包


6、在ActionScript项目和Flex项目中可以使用fl包