加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

as3的swf不能加载含有as2.0脚本以下的swf文件吗?

发布时间:2020-12-15 17:44:23 所属栏目:百科 来源:网络整理
导读:?? http://bbs.9ria.com/thread-136576-1-1.html as AVM1Movie var myLoader:Loader=new Loader();myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);myLoader.load(new URLRequest("source.swf"));function onComplete(e:Event):voi
??

http://bbs.9ria.com/thread-136576-1-1.html


as AVM1Movie

var myLoader:Loader=new Loader();
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
myLoader.load(new URLRequest("source.swf"));
function onComplete(e:Event):void
{
        var main:MovieClip = e.target.content as MovieClip;
        addChild(main);
}

报错:
TypeError: Error #2007: 参数 child 不能为空。

换成普通的swf文件又会正常显示。囧~~

之后又出现了这个问题:
ArgumentError: Error #2180: 如果 AVM1 内容(AS1 或 AS2)已加载到 AVM2 (AS3) 内容中,则不可将其移动到 displayList 的其他部分。

经查过资料后已经解决!不过还不是很明白....
http://iagjiang.blog.163.com/blog/static/1658478020107532054124/
今天做一个东西时,无意中发现了这个问题。

? ? 问题描述:我们都知道flash player有两个虚拟机AVM1和AVM2。前者是flash player9以下的版本运行时所需要的,它用来解析as1和as2。后者是专门为as3开发的,用来解析as3。

? ?我用flash player10加载了一个player8及以下的swf(2.0的),并且把content添加到显示列表中。结果就出现这样的问题。

ArgumentError: Error #2180: 如果 AVM1 内容(AS1 或 AS2)已加载到 AVM2 (AS3) 内容中,则不可将其移动到 displayList 的其他部分。
at flash.display::DisplayObjectContainer/addChild()
at flash.display::Stage/addChild()
at _fla::MainTimeline/com()

经测试,只有flash player10以上得版本会出这样的问题,换成9就没问题了。不知道player10是什么搞的,用的不是AVM2吗?也就是只要你用player 10加载player9以前版本发布的swf就会出错。



? ? 问题分析:我们来看看错误描述,“如果 AVM1 内容(AS1 或 AS2)已加载到 AVM2 (AS3) 内容中,则不可将其移动到 displayList 的其他部分”。说明as1或as2已经加载进来了,只是有把它移动到其他的现实列表导致这样的问题。



? ? 问题解决:直接把加载swf的loader加载到显示列表,这样就不会出问题。



-----------------

FLASH AS2.0加载用AS3.0做的SWF文件

http://zhidao.baidu.com/link?url=tqK_0BV_mowwcMXJSFgSBJN0S2JvkvA2vSj-2CQEqKzuObWNToqs_AhnLvArZ0nQonDXkoI_l8aPJVfqxnS_Ta

使用AS2.0或1.0编写的swf是不可以加载AS3.0的。换句话说Flash 8&Flex 1.5及之前所有工具生成的swf都不可以加载(load)AS 3.0 swf的
使用AS3.0确实可以加载AS2.0 或者 1.0的swf。但是AS3.0不可以访问加载swf中变量和函数。为了方便理解,我们可以想成两个虚拟机并行工作,但是不能通信。事实上,我猜实现机制可能就和这个差不多。LocalConnection。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读