使用FlexComponentKit实现flash和flex完美互通
看了点资料,把flex中使用flash的影片剪辑得方法研究了一下,着重研究了一下FlexComponentKit,下面说说flex中使用flash影片剪辑的方法。
1,下载FlexComponentKit
下载地址https://www.adobe.com/cfusion/entitlement/index.cfm?e=flex%5Fskins进去后,如果没有账号要注册一个账号,登录,找到最下面的Download Flex Component Kit for Adobe Flash CS3 Professional,下载
2,安装FlexComponentKit
如果你电脑中又Adobe Extension Manager直接双击就可以安装了,如果你安装得精简版的flash或者什么版本的,反正就是找不到Adobe Extension Manage,没办法你还得下载个Adobe Extension Manager安装,cs3的下载地址http://www.adobe.com/exchange/em_download/em18_download.html
3,研究一下FlexComponentKit到底是个嘛玩意,干嘛用的
新建一个MyBall的fla文件,插入一个Ball的影片剪辑,这个Ball就是我们准备在flex中使用的影片剪辑,Ball里面比较简单就是一个小球得运动,从上到下,附件里面又大家可以看一下
下面我怎么看看怎么把这个剪辑导出去,找到库里面的Ball,右键链接,看到这个
我们注意一下他的基类是flash.display.MovieClip,就是影片剪辑的继承,如果我们安装好了FlexComponentKit,在库中点击这个Ball,然后执行菜单中的-命令—Covert Symbol to Flex Component,然后flash会给你打印出一个信息,告诉你活已经干完了,你可以在flex中使用这个组件了,但是你还需要发布一下,这时候停一,下我们再来看看这个Ball,右键-链接我们会看到这个
他的基类变成了mx.flash.UIMovieClip,这下童鞋们差不多都明白了,FlexComponentKit就是想办法把flex中的这个mx.flash.UIMovieClip搞进来,我们做的原件都是他的继承,那么我们就可以像使用组件一样使用这个影片剪辑了,我们再给这个类一个包名com,变成这个
然后我们发布一下(菜单-文件-发布),找到我们的这个flash的保存目录,你就可以看到一个MyBall.swc,这下大伙差不多都明白下面flex该怎么用了
4,flex中使用影片剪辑Ball
新建一个工程flexandflash,右键-properties—Flex Builder Path—Library path—Add SWC然后就可以选择我们刚才得swc文件了。通过下面的代码
代码 1<?xml version="1.0" encoding="utf-8"?>
2<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:com="com.*">
3 <com:Ball x="100" y="100" />
4</mx:Application>
5
5,高级用法
我们发现我们这种方式实现的东西,利用SWFLoader实现的东西没啥区别,SWFLoader多简单啊,我们在这里折腾半天,其实我们看到上面得过程,知道这种方法是把影片剪辑作成了一个组件来使用,组件说白了是个类,是类就有属性方法,当然还有我们经常用的事件,我们现在来看看这个的用法
在MyBall.fla下面写个类,在com包下面FlashBall.as
代码 1package com
2{
3 import flash.events.Event;
4
5 import mx.flash.UIMovieClip;
6
7 [Event(name='begin',type='flash.events.Event')]
8 [Event(name='finish',type='flash.events.TextEvent')]
9 public class FlashBall extends UIMovieClip
10 {
11 public var data:String;
12 public function FlashBall()
13 {
14 super();
15 }
16 public function replay():void{
17 gotoAndPlay(1);
18 dispatchEvent(new Event('begin'))
19 }
20 }
21}
22
类里面啥东西自己看吧,额就不解释了
我们在Ball的最后一帧发出结束得事件
在Ball得第20帧写下
代码 stop();
import flash.events.TextEvent;
var eventObj:TextEvent = new TextEvent("finish");
eventObj.text = data;
dispatchEvent(eventObj);
这样我们在replay的时候会发出begin事件,在结束得时候会发出finish事件
同时我们把Ball的基类改成我们刚刚写好的FlashBall,
别忘了发布
回到flex中我们已经可以使用My:Ball标签了
代码 1<?xml version="1.0" encoding="utf-8"?>
2<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:My="My.*" fontSize="12">
3 <mx:Script>
4 <![CDATA[
5 import mx.controls.Alert;
6 private function finishHandler(event:TextEvent):void{
7 Alert.show(event.text, "完成");
8 }
9 private function clickHandler():void{
10 flashball.replay();
11 flashball.data = "重新播放";
12 }
13 ]]>
14 </mx:Script>
15 <My:Ball id="flashball" x="100" y = "100" data="播放"
16 begin="trace('ball begining')" finish="finishHandler(event)">
17
18 </My:Ball>
19 <mx:Button x="0" y="0" label="Play" click="clickHandler()"/>
20</mx:Application>
21
里面是我使用这个组件做的试验,大家可以看试试他们得属性方法,具体怎么弄大家慢慢探索
还有就是别忘了修改后别忘了发布这一步,这一步会经常出错
6,结束
这是我看一个视频,从里面学来的,是个英语视频,也不知道我说错没有,大家可以从电驴下载下来看看(Lynda.com.Adobe.Flex.3.Beyond.the.Basics)如果有啥错了,谁看到了给我说声,谢谢