因为此问题,我还跑到Adobe的官网去发贴询问。后面发现其实解决问题挺简单的。。
AS3.swf作为加载器需要加载AS2 AS3 和图片文件.
最开始在网上找到的方法是加载进来之后将evt.target.content转换成MovieClip对象,然后对该对象进行scale
如这篇文章讲的一样
http://wubingcair.blog.163.com/blog/static/309300352008958473065/
但是后面发现这种方式只适合加载as3的文件..
而且后面还发现文中确实说了,这只适合as3的文件....
1。当加载as2的时候,会报出 " avm1不能转换成为MovieClip"....这个原因是 avm1中的对象和avm2中的flash.display.MovieClip不是一个东西了...只是trace(evt.target.content)的时候.avm1对象出来的是MainTimeLine..另外如果加载的是图片,也会出错.出现类型强制转换的错误
2。按照文中的方法,在加载文件之后应该移除加载其的loader,然后将evt.target.content添加到对象列表中.当上一步出错了之后,我把evt.target.content赋给一个*类型的对象.然后将*类型的对象addChild, addChildAt. 但是还是报错.错误说,对于avm1的文件加载到avm2里面来后,不能改变其所处的层次...其实就是不能用addChild..
3。那么既然这样的话.赋给*类型的对象没有报错,add会报错.那我就不将loader移除,并且不add*类型对象.同时对*类型对象进行等比缩放..
运行 问题解决了...
var game:* = evt.target.content; var scale:Boolean = game.width / game.height > g_width / g_height var scaleRate:Number = scale ? g_width / game.width : g_height / game.height; game.scaleX = game.scaleY = scaleRate; game.x = (g_width - game.width) / 2; game.y = (g_height - game.height) / 2;