⑴ flash as3按钮加载外部的swf文件
比如说你的按钮叫play_btn。需要先建一个图层和一个空白的影片剪辑,并且把这个影片剪辑放到图层上,实例名为swfmc,在建一个名为as的图层,用来写代码。varmovie_ldr:loader=newloader();play_btn.addeventlistener(mouseevent.click,loadhandler);functionloadhandler(event:event):void{movie_ldr.unloadandstop();varurlstr:string="这里面写上swf文件的地址";varreq:urlrequest=newurlrequest(urlstr);movie_ldr.load(req);movie_ldr.contentloaderinfo.addeventlistener(event.complete,oncomplete);}functiononcomplete(evt:event):void{if(swfmc.numchildren>0){swfmc.removechildat(0);}swfmc.addchild(movie_ldr);//下面还可以对它的其他属性进行调整,如下swfmc.x=0;swfmc.y=0;}//////////////over我又测试了一下,没有任何问题。是不是你那个地方弄错了,或是其他笔误。
⑵ as3中加载外部swf文件报错提示无法访问空对象引用的属性或方法。
像这种,如果你的代码确定没有问题,就很有可能是你那个外部的swf中,有引用过stage,因为当你这个swf被加载了,那么你原先的stage就会变成空。办法就是去修改被加载的swf的源码,把stage的引用修改掉。
⑶ AS3加载外部swf文件,如何调用原swf里的方法
加载b.swf成功后,将a传到b中去,之后在b中可以使用这个变量来控制a上的东西
a.swf加载代码:
varloader:Loader=newLoader();loader.load(newURLRequest("b.swf"));loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadCompleteFun);loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loadErrorFun);functionloadCompleteFun(e:Event):void{varobj=e.currentTarget.content;obj.main=this;//注意,在b.swf中必须有公共变量main才行,否则这里就报错了,可以自定义,只要双方都统一就行this.addChild(obj);}functionloadErrorFun(e:IOErrorEvent):void{trace("b.swf不存在!");}functionmainFun():void{trace("这个是a中的方法!");}
在b.swf中要有一个公共变量,让a来设置的
b.swf代码:
varmain;btn.addEventListener(MouseEvent.CLICK,clickFun);functionclickFun(e:MouseEvent):void{if(main){main.mainFun();//调用a中的方法//对于a中的所有可访问的方法与变量都可以这样访问使用}}
代码已测试通过。
⑷ AS3.0中加载SWF文件后,如何做到只播放载入SWF文件的前几帧(不完全播放SWF文件)
很简单,AS3加载swf之后,可以取得被加载swf对象,直接用被加载对象的当前帧等于几帧的时候执行停止播放被加载的对象就可以了
⑸ AS3.0 如何加载swf
var s1:Loader =new Loader();//加载器1用来加载影片1var s2:Loader =new Loader();//加载器2,你想多少就写多少var d1:URLRequest=new URLRequest("a.swf");//对应的加载地址;var d2:URLRequest=new URLRequest("b.swf");//加载器2要加载的地址var g;//这个变量用来使加载进的影片能够代码控制;var k:int=1;//这变量控制要加载的是哪个影片var w:Boolean=true;//开关控制;addEventListener(Event.ENTER_FRAME ,iui);//增加逐帧侦听器function iui(e:Event ) { pan(w,k);//逐帧侦听器每帧执行pan方法;开关变量和加载数}function pan(ee:Boolean ,ff:int) {//判断方法有二参数, if (ee) {//如果开关打开; switch (ff) {//根据数目加载不同影片 case 1 ://数目为1时加载影片1,并显示和建加载完成时的侦听 s1.load(d1); addChild(s1); s1.contentLoaderInfo.addEventListener(Event.COMPLETE ,bn); w=false;//开关关闭; k++;//数目加1 break; case 2 ://数目为2时加载影片2,删除影片1 removeChild(s1); s2.load(d2); addChild(s2); s2.contentLoaderInfo.addEventListener(Event.COMPLETE ,bn); w=false; k++; break; case 3 ://数目为3时删除掉逐帧事件,并删除加载的最后一个影片 removeChild(s2); removeEventListener(Event.ENTER_FRAME ,iui); break; } } else {//如果开关是关的时候, if (g.currentFrame==g.totalFrames) {//加载进的影片如果播放完就打开开关,能使加载另个影片 w=true; } }}function bn(e:Event ) {/*这是加载完毕每个影片时的方法,变量g等于这个加载的影片,使加载进的影片可以控制,因为As3中不能直接控制加载影片。这是变通方法,也是国际方法*/ g=e.target.content;}
⑹ FLASH as3.0链接外部swf文件
建议你在你的原始swf中,3个mc加载3个swf,然后设置3帧,比如第一帧里就把swf1放置在中间,其他的移到屏幕外,同理后面3帧也是,因为如果你是用attach(as2.0)或者3.0我忘了是哪个函数了,卸载一个再放置一个肯定会有内存泄露而且效率非常慢,我们一般如果你需要加载的不是很多的时候可以采用我们的方法,我们在一般的游戏里都是这么设计的,你只需要将原有的swf跳到某一帧就可以了如果swf很多的话,建议每一帧removeChind(swf)多次,然后添加addChild一次,你的每一帧都对应一个画面。其实你们在用flex做还是就用flash?如果非常多swf的话,我可以建议你们一个方法。我用的,不过不知道你们可不可以了我用VB语言添加flash控件的方法,每次有新的跳转就清空控件重新加载另一个flash,如果你屏幕上要求有多个的话,也可以添加多个flash控件,flash和VB之间可以通过xml来交互传递数据。同理C#也可以这么做。
⑺ 如何用AS3.0在flash里调用swf文件 请写出代码 十分感谢 如果能讲解一下更好
//创建loader对象varloader:Loader=newLoader();//创建URL请求对象,XXX.swf要放在你做的flash的文件夹内.不仅是swf,一般的图片也可以.声音什么的没试过varrequest:URLRequest=newURLRequest("XXX.swf")//loader读取你要读的内容loader.load(request);//在舞台上显示你读进来的内容.addChild(loader);若要在舞台上去除读来的内容,使用removeChild(loader)即可.望采纳.
⑻ Flash 中如何用AS3导入swf格式的文件做Flash文件动态背景
~~~~~~于是乎 就是用Loader 类 加载swf.import flash.display.Loader;import flash.net.URLRequest;var loader:Loader=new Loader();loader.load(new URLRequest("北飘草祝大家新年快乐.swf"));addChild( loader);// 将这个东东添加进去,如果你没写这个就只有声音但你却看不到。哈哈问题②:设置它跟随舞台大小改变而改变。在查看API你要会发现 原来有个StageScaleMode 这个类有四个常量:①EXACT_FIT 指定整个应用程序在指定区域中可见,但不尝试保持原始高宽比。②NO_BORDER : 指定整个应用程序填满指定区域,不会发生扭曲,但有可能会进行一些裁切,同时保持应用程序的原始高宽比。③、、④。。还有个StageAlign 有8个常量:①BOTTOM : 指定舞台靠底部对齐。②BOTTOM_LEFT 指定舞台靠左下角对。齐。③。。④。。⑤。。。。。 于是乎 你就知道答案了 哈哈import flash.display.StageScaleMode;import flash.display.StageAlign;stage.align=StageAlign.TOP;// 顶部stage.scaleMode= StageScaleMode.SHOW_ALL;// flash播放器就全屏好了将上面的代码放在一起就是你要的答案了,你自己调下属性 自己改哈。。。追问: addChild( loader); 这个不太理解, 这个是把swf添加到舞台显示,如果是在第一帧写,那么有那么多个层,这个swf文件怎么确定就显示在最底层,不用设置吗? 回答: 首先:你加载了swf 就相当于一个 Mc 。Mc可以stage.addChild(Mc)到舞台的吧。不能理解Y .。然后你说的swf里的层??将一个swf加载进去 就是一个mc 就不用管什么层的问题了。最后你说的 这个swf文件怎么确定就显示在最底层? 如果有N个swf要加载进去,你要设置那个在最底层 那么就用你、另外一个方法:addChildAt() 这个方法可以指定加载那个深度。 如:addChildAt( loader ,0) 就是把这个对象放在最下面。 以此推addChildAt( loader ,1) 倒数第二个。。
⑼ 如何通过AS3加载外部SWF文件,调用外部文件文档类的方法
简单示例:主文件:Main.fla, Main.as被调用的文件:called.swf, Called.as主文件Main.as:package{ import flash.display.Sprite; import flash.net.URLRequest; import flash.display.Loader; import flash.events.Event; public class Main extends Sprite{ private var loader:Loader; public function Main(){ loader = new Loader(); loader.load(new URLRequest("called.swf")); loader.contentLoadInfo.addEventListener(Event.Complete, loadComplete); } private function loadComplete(e:Event):void{ var obj:Object = loader.content; // 通过loader.content获取Called类对象,并赋值给Object对象 obj.method(); //调用Called对象的method方法 } } } ———————输出结果————————-Called对象中的method方法被调用了——————————————————–被调用文件: Called.as
⑽ flash as3.0加载swf交互
当然是要监听点击事件了,但首先你加载的swf文件必须是AS3的并定义好按钮元件var mc:* = 加载的swf;//注意必须是加载器的.contentmc.swf里的按钮.addEventListener(MouseEvent.CLICK,toHandle);function toHandle(e:MouseEvent):void{ this.gotoAndStop(指定的帧);}