as3项目中加载as1/2编写的swf文件

从网上找到一个swf文件,想测试在as3的工程中引用它,但是按照正常的加载swf代码执行时,弹出了异常TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::AVM1Movie@2c33f31 to flash.display.MovieClip.
    at Function/<anonymous>()[C:\Users\Administrator\Adobe Flash Builder 4.7\test\src\test.mxml:86]

。原来这是由于要加载的swf文件的as版本不是3引起的。

那么可以用如下方法加载该文件,但是加载后只能显示该swf文件,无法使用movieclip的停止和播放方法对它进行操作,代码如下

var loader1:Loader = new Loader();
                loader1.load(new URLRequest("ad_85c71d6182a44284.swf"));
                loader1.contentLoaderInfo.addEventListener(Event.COMPLETE,function(event:Event):void{
                    movie.addChild(loader1);
                    stage.addChild(movie);
                });

 

那么如果要同时实现对该swf进行操作应该如何呢?从网上找到的一个网友提供的solution,不过自己还没有进行验证,可以参考一下,以下是原网友的文章的一段文字:

 

1.使用JS做为中转,在页面中实现通讯。
示例:
缺点:要依赖页面,单独不能使用。
2.使用ShareObject做为中转。
缺点:操作起来比较麻烦。
3.使用LocalConnection做为中转。
示例:http://www.6dn.cn/blog/default.asp?id=81
个 人觉得LocalConnection还是比较不错的解决方法。接下来介绍的是我写的Avm1Loader类,使用了LocalConnection,为 什么写了一个类呢?我们都知道,使用LocalConnection不单单要在as3中写代码,as2中也同样要相应的代码以便互相调用,可有时候as2 版本的swf已经导出无法修改,此时你不可能再反编译再在里边加个LocalConnection吧(如果真这样做那也没办法)?这个你就需要一个as2 版本的swf壳~,先把壳加载进来,然后再用壳加载目标swf,通过实验,这个方法是可取的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值