遇到问题:如果 AVM1 内容(AS1 或 AS2)已加载到 AVM2 (AS3) 内容中,则不可将其移动到 displayList 的其他部分

编程入门 行业动态 更新时间:2024-10-04 03:26:14

遇到问题:如果 AVM1 <a href=https://www.elefans.com/category/jswz/34/1771374.html style=内容(AS1 或 AS2)已加载到 AVM2 (AS3) 内容中,则不可将其移动到 displayList 的其他部分"/>

遇到问题:如果 AVM1 内容(AS1 或 AS2)已加载到 AVM2 (AS3) 内容中,则不可将其移动到 displayList 的其他部分

    今天做一个东西时,无意中发现了这个问题。
    问题描述:我们都知道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加载到显示列表,这样就不会出问题。
    归根结底,ADOBE其实认为正规的做法是将loader直接作为displayObject进行addChild即可,通过建立中转的方式会导致这部分长驻内存,除非关闭FLASHPLAYER否则释放不了。

更多推荐

遇到问题:如果 AVM1 内容(AS1 或 AS2)已加载到 AVM2 (AS3) 内容中,则不可将其移动到 displayList 的其他部分

本文发布于:2024-02-14 06:20:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762112.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内容   将其   加载   displayList

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!