我正在设计一个小游戏,我正在为一个暴徒对象创建一个类。该类包含一些广泛的变量,可用于创建该对象的多个实例。我想知道是否可以在类中使用加载器而不是主类中的加载器,该加载器可用于为我正在编写的 mob 类加载图像。
这是一个好的做法吗?我看过一些关于拥有多个加载器的帖子,大概就是这样,但似乎没有一个帖子提到什么是最有效的。我以前在其他项目中做过这个,但没有任何基准或任何东西。
那么谁能告诉我这是否不是太耗费资源而让每个实例化都使用它自己的加载器,然后在加载图像后将其设置为空?该项目的范围非常基本,但很高兴知道未来的项目。
- 编辑 -
我只是查看了 graphics.copyfrom(source) 并意识到这是行不通的。更多的研究使我惊讶地发现缺乏“电影剪辑克隆”。另外,正如我所担心的,当我试图删除一个时,将多个影片剪辑指向加载器内容会删除所有这些。
可悲的是,即使我最初的选择可能效率不高,但它基本上是可以做到这一点的唯一方法......每个暴徒都有一个动画 swf 电影剪辑,所以我不能制作位图。我也不能重用来自加载器的内容,因为如果多个影片剪辑指向它,改变一个暴徒将导致其余的影片剪辑发生变化。不幸的是,我现在要坚持让每个暴徒都有自己的加载器(在使用后设置为 null)并加载外部 swf。显然,在 AS2 中曾经有一种方法可以做到这一点,我不想将库符号与文档类一起使用。所以,我被困住了。感谢您的帮助,如果您找到解决我问题的方法,请回复!
- 编辑 -
我认为代码片段也可能有用。请记住,这些是加载了 20 多个帧的 swf。
public class Spawner {
var mc:MovieClip;
var loader:Loader;
var refr:Stage;
var x:Number,y:Number;
var loaded:Boolean = false;
public function Spawner(ref:Stage, type:String, inx:Number, iny:Number) {
refr = ref;
x = inx;
y = iny;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadImg);
loader.load(new URLRequest(type));
}//constructor
public function loadImg(e:Event):void{
mc = MovieClip(e.target.content);
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadImg);
refr.addChild(mc);
mc.gotoAndStop(1);
mc.x = x;
mc.y = y;
refr = null;
loader = null;
loaded = true;
}//loadImg
}//class