0

我正在设计一个小游戏,我正在为一个暴徒对象创建一个类。该类包含一些广泛的变量,可用于创建该对象的多个实例。我想知道是否可以在类中使用加载器而不是主类中的加载器,该加载器可用于为我正在编写的 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
4

2 回答 2

0

恕我直言,你有一个里面有加载器的类是没有问题的。垃圾收集器负责这项任务并为您清理它。最重要的部分是为您用来将加载程序释放到垃圾收集器的侦听器创建一个“removeEventListener”。

但是如果你将有 350 个对象同时加载 350 张不同的图像,你可以换一种方式思考:如果你做一个 sprite 并加载一次并使用它几十次呢?

这里的问题(如果有问题)是关于图像的并发 http 请求数。如果它使您的加载过程变慢,请考虑sprite image

干杯。

于 2013-05-01T00:17:33.180 回答
0

这听起来真是个坏主意。您正在为每个实例加载一个新图像。

为什么不只是在其中包含一个带有加载器的类来充当您的图形存储库。让它加载您在游戏的特定部分中需要的所有图像,然后为您加载的每个图像公开 BitmapData 实例。

这样,您可以让每个 Mob 实例由其自己的 Bitmap 以图形方式表示,但每个 Bitmap 的内容将由图形存储库中单个加载的 BitmapData 实例定义,从而节省大量内存并无需向服务器发出请求每个 Mob 的图形,这将是非常低效的。

视觉上你应该有这样的东西:

在此处输入图像描述

于 2013-05-01T00:52:16.790 回答