Flash中flash包、fl包和mx包的区别

37 篇文章 0 订阅
24 篇文章 0 订阅


http://blog.csdn.net/peterpeng881003/article/details/7221088

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包

-----------------------

在flex中导入fl包

http://blog.csdn.net/summerhust/article/details/6970195

flash包与fl包有什么不同?

flash包与fl包到底有什么区别呢?简单的说就是flash是Flash Player核心的库,不管在Flash中还是FD、FB中,都可以用;而fl是专门用于Flash中的一个组件库。虽然fl包下很多包名是跟flash 包下一样的,但却不是相同的,大致可将前者看作是后者的一个扩展。就跟Flex中的mx包是专门用于FB作为flash核心类的扩展一个道理。
网上经常可以看到说flash导出的动态连接库无法直接在Flex中用,确实是这样吗?既然flash包是Flash Player核心的库,而动态链接库的类一般都继承MovieClip或Sprite、BitmapData之类的,所以当然可以跟用Flex下的这些类的子类一样去用这些导出类。只是要注意的一点是:MC和Sprite等不是继承自UIcomponent类的组件不可以直接addChild进Flex 中,要用UIcomponent转化一下。
那我们如果要在FB中用到fl包,应该怎么办呢?很简单,在Flash中将fl包发布为一个swc组件即可跟核心包一样在FB下利用了,并且代码智能提示一样不少。在FD中也可用这个方法,另外FD中还可:复制FlashDevelop\Library\AS3\frameworks\FlashIDE下面的fl包到FlashDevelop\Library\AS3\intrinsic\FP10或FP9下,重启FD就可看到这时已经有fl包的智能提示了。


-----------------------

http://xlh1221it.blog.163.com/blog/static/129587224201092665658660/

 解决了如何在ActionScript工程中使用fl包中的UI组件问题后,我就想为啥不能使用Flex mx包中的UI组件呢!mx包中提供的UI组件比fl包中的功能更强大。而且也在网上搜到了介绍如何在ActionScript项目中导入flex组件的方法。于是写了一个简单的测试代码试了一下,发现编译和运行的时候都不会报错,只是UI组件无法显示。

        测试代码如下:

package {
 import flash.display.Sprite;
 
 import mx.controls.Button;

 public class TestFlexUI extends Sprite
 {
  public function TestFlexUI()
  {
   var btn:Button = new Button();
   btn.label = "FLex UI";
   btn.width = 200;
   btn.height = 100;
   addChild(btn);
  }
 }
}
随后想到以前在一个flex工程中,是不能直接添加Sprite类到显示列表的,必须先用UIComponent封装一下。
于是将代码改为:

package {
 import mx.controls.Button;
 import mx.core.UIComponent;

 public class TestFlexUI extends UIComponent
 {
  public function TestFlexUI()
  {
   var btn:Button = new Button();
   btn.label = "FLex UI";
   btn.width = 200;
   btn.height = 100;
   addChild(btn);
  }
 }
}
        再运行的时候就会报“ No class registered for interface 'mx.styles::IStyleManager2'”这个错误。搜了一下,随后彻底死心了,在ActionScript项目中还真是不能使用mx包中的UI组件。

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

        这也就解释了为何很多Flash游戏项目中做用户界面都要使用fl包,而没见过使用mx包的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值