加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:44:22 所属栏目:百科 来源:网络整理
导读:?? 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项目中不能
??

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://www.voidcn.com/article/p-uchfwext-bge.html

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中还可:复制FlashDevelopLibraryAS3frameworksFlashIDE下面的fl包到FlashDevelopLibraryAS3intrinsicFP10或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包的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读