以下在Flex中实现调用swf文件或者swc文件中的帧中的内容:
本项目在Flex Builder3.0 和Flash CS3环境下完成。
在Flex Builder中实现调用swf帧里的内容:
首先,在Flash CS3创建一个ActionScript3.0 的Flash File,然后将两张图片导入库,创建一个影片剪辑,将这两张图片放入这个影片剪辑里,如图一所示:
(图一)
然后在这个影片剪辑里的第一帧放入图片pic1_1,在第二帧里放入图片pic2_2,如图二图三所示:
(图二)
(图三)
然后在这个影片剪辑右键,选Linkage,再在里面选择Export for Actionscript,并输入类名(而这个类名,就是要在程序中引用的,在这里我输入mypic1),如图四、图五所示:
(图四)
(图五)
最后将这个flash publish出来,生成一个swf文件。然后打开Flex builder,将swf文件放在libs目录下。
swfpro.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml
" layout="absolute"
creationComplete="init()">
<mx:Script>
<![CDATA[
public var varpic:mypicClass;
public var ppic:mypic1=new mypic1();
public function init():void{
//这个是加载swf里的第一帧的东西,在flex中调用swf里的帧的内容,我只知道这个方法,有更好的方法请回复我。呵。
varpic=new mypicClass();
varpic.mouseEnabled=true;
this.addChild(varpic);//这里是添加到UIComponent中,所以不能使用gotoandplay来调用第二帧的内容
varpic.x=0;
varpic.y=0;
}
]]>
</mx:Script>
</mx:Application>
mypicClass.as:
package
{
import mx.core.UIComponent;
import flash.display.MovieClip;
[Embed(source='../libs/mypic.swf',symbol="mypic1")]
public class mypicClass extends UIComponent
{
public function mypicClass()
{//此处为空
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在Flex 中调用swc文件里帧的内容:
注:使用的flash与上面的一样,只是在影片剪辑里点击右键,选择“Export swc file”,如下图所示:
swfpro1.mxml:
<mx:Script>
<![CDATA[
import flash.display.*;
import mx.core.UIComponent;
import flash.display.MovieClip;
public var varpic:mypicClass;
public var ppic:mypic1=new mypic1();
private var uc:UIComponent = new UIComponent();
public var ii:int=1;
public function init():void{
this.addChild(uc);
uc.addChild(ppic);
ppic.x=0;
ppic.y=0;
ppic.gotoAndStop(1);
ppic.addEventListener(MouseEvent.CLICK,mouseHandler);
}
private function mouseHandler(evt:MouseEvent):void{
if(1==ii){
ppic.gotoAndStop(2);//这里实现了获取swc文件里帧的内容
ii=0;
}else{
ppic.gotoAndStop(1);
ii=1;
}
}
]]>
</mx:Script>