类实例中的AS3加载器

时间:2013-05-01 00:07:11

标签: flash actionscript loader

我正在设计一个小游戏,我正在为一个暴徒对象创建一个类。该类包含一些广泛的变量,这些变量在创建此对象的多个实例时非常有用。我想知道在类中有一个加载器而不是主类中的加载器是否可以用于加载我正在编写的mob类的图像。

这是一个好的做法吗?我看过一些关于有多个加载器的帖子,这有点像那样,但没有一个帖子似乎提到了最有效的方法。我之前在其他项目中做过这个,但没有任何基准或任何东西。

所以任何人都可以告诉我,如果每个实例化使用它自己的加载器不是太耗费资源,那么在加载图像后将其设置为null?该项目的范围非常基础,但了解未来的项目会很好。

- 编辑 -

我只是查看了graphics.copyfrom(source)并意识到它无法正常工作。更多的研究让我惊讶地缺乏“movieclip cloning”。另外,正如我所担心的那样,当我尝试删除一个时,将多个动画片段指向加载器内容会删除所有这些。

可悲的是,尽管我的原始选择可能效率不高,但基本上这是唯一的方法......每个暴徒都有一个动画的swf动画片段,所以我无法制作位图。我也无法重复使用加载器中的内容,因为如果多个动画片段指向它,更改一个怪物将导致其余动画片段的更改。不幸的是,我将 - 现在 - 坚持使用它自己的加载器(在使用后设置为null)并加载外部swf的每个暴徒。显然在AS2中有一种方法可以做到这一点,我不想在文档类中使用库符号。所以,我被困住了。感谢您的帮助,如果您找到解决我问题的方法,请回复一下!

- 编辑 -

我认为代码段也可能有用。请记住,这些是加载了20多个帧的swfs。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

欢呼声。

答案 1 :(得分:0)

这听起来真的很糟糕。您正为每个实例加载一个新图像。

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

这样,您可以通过自己的Bitmap以图形方式表示每个Mob实例,但每个Bitmap的内容都由图形存储库中单个加载的BitmapData实例定义,从而节省了大量的内存和省略必须向服务器请求每个Mob的图形,这将是非常低效的。

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

enter image description here