Flex 使用 Flash MovieClip的 几种方法。

1> Flex 与 Flash 中的类对应关系

Flex 中的 UI元素 大都继承自 UIComponent类
     UIComponent > FlexSprite> Sprite >DisplayObjectContainer>InteractiveObject >Displayobject

Flash 中的架构 (Sprite类的继承关系)
    MovieClip > Sprite > DisplayObjectContainer > InteractiveObject >Displayobject

  Flex 中无法直接使用Flash 中的MovieClip元件。只能通过工具 将Flash MovieClip 转成 UIMovieClip, UIMovieClip 继承自 MovieClip, MovieClip 类用于实现其使用方式与普通 Flex 组件一样的某个 Flash 组件的必要接口。因此,MovieClip 的子类可以用作 Flex 容器的子项或外观,它可以响应事件、定义视图状态和转换,还可以像所有 Flex 组件一样使用效果。


2> 进行转换所需要的工具。

  (A)下载 Flex Component Kit 的地址。    

  https://www.adobe.com/cfusion/entitlement/index.cfm?e=flex%5Fskins

  注册用户,登陆,选择最下面的 FLEX COMPONENT KIT FOR FLASH CS3 PROFESSIONAL 下载。

  (B)要运行这个,你还需要Extension Manager, 下载地址:  http://download.macromedia.com/pub/dw_exchange/extension_manager/win/em18_install.exe

  (想放个图片在这里,不会,呵呵~~)

  

3> 下面开始将几种使用Flash MovieClip 的方式

   <1>直接用 Load swf的方式  

  1. <mx:Script>
  2.     <![CDATA[
  3.     private function playAnimation():void
  4.     {
  5.         var flashContent:MovieClip = loader.content as MovieClip;
  6.         flashContent.gotoAndPlay(1);
  7.     }
  8.     ]]>
  9. </mx:Script>
  10.     
  11. <mx:VBox backgroundColor="#FFFFFF">     
  12.     <mx:SWFLoader id="loader" source="CarRace.swf"/>
  13. </mx:VBox>
  14.     
  15. <mx:Button label="Play Movie" click="playAnimation()" />

    <2> 将swf 文件 Embed 进 Flex的方式这种做法时,要将Flash的贞率调至 24

  1. <mx:Script>
  2.     <![CDATA[           
  3.     [Embed(source="CarRaceAsSymbol",symbol="mcCarRace")]
  4.     [Bindable]
  5.     private var flashSymbol:Class;
  6.         
  7.     private function playAnimation():void
  8.     {
  9.         var flashContent:MovieClip =
  10.         loader.content as MovieClip;
  11.         flashContent.gotoAndPlay(1);
  12.     }
  13.     ]]>
  14. </mx:Script>
  15. <mx:VBox backgroundColor="#FFFFFF">     
  16.     <mx:SWFLoader id="loader" source="flashSymbol"/>
  17. </mx:VBox>
  18.     
  19. <mx:Button label="Play Movie" click="playAnimation()"/>
   <3> 最常用的一种,用我们刚才下载的工具,将要导出的Flash MovieClip 编译为SWC,Flex 可以直接调用。

      1.在 Flash Library 中选中我们需要的MovieClip, 选中Menu中的 Commands,选中Convert Symbol to Flex Component. 察看这个MovieClip的linkage属性,你会发现 这个MovieClip父类已经从MovieClip 变成了UIMovieClip.

      2.这时,在FlashLibrary 中,选中这个MovieClip,右键-〉选择Export SWC File.(也可以直接从File Menu中选择 Publish) 导出SWC.

      (我觉得更合理的做法是,自定一个基类,让这个要导出的MovieClip去继承,这样做法的好处是可以使得 这个MovieClip具有了一些自定义的行为,比如事件,如下代码里的做法,Flex 可以监听到 Flash MovieClip 内部的事件)

  1. package flashcomps
  2. {
  3.     import mx.flash.UIMovieClip;
  4.     import flash.events.Event;
  5.     import flash.events.TextEvent;
  6.     
  7.     [Event(name="start",type="flash.events.Event")]
  8.     [Event(name="finish",type="flash.events.TextEvent")]
  9.     
  10.     public class CarRaceClass extends UIMovieClip
  11.     {
  12.         public function CarRaceClass()
  13.         {
  14.             super();
  15.         }
  16.         
  17.         public function go():void
  18.         {
  19.             gotoAndPlay(1);
  20.             dispatchEvent(new Event("start"));
  21.         }
  22.     }
  23. }
通过使这个 MovieClip 继承这个类,使得该类可以监听到Start 和 Finish的两个事件。

    〈3〉Flex Project Menu-> Properties->Flex Build Path->Library Path 加入SWC存放的路径,(也可以直接将SWC 放到lib 文件夹里去,但这样不好,应该让引用的SWC在Flash的工作目录下,这样保证Flash 编译的时候,SWC也相应的编译)

这样:Flex 中可以 直接使用该组件了。比如:  

  1.     <FlashComps:FlashCarRace id="race" x="100" y="100"/>





  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值