Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 为了方便而扩展Sprite类?_Actionscript 3_Oop_Class - Fatal编程技术网

Actionscript 3 为了方便而扩展Sprite类?

Actionscript 3 为了方便而扩展Sprite类?,actionscript-3,oop,class,Actionscript 3,Oop,Class,我总是试图扩展Sprite类,这样我的对象就可以成为显示列表的一部分,并且还具有EventDispatcher函数,即使它没有任何要显示的内容。但是,它将包含要显示的内容。这很方便,因为这些包含的对象只需引用其容器即可访问显示列表 有人遇到过这种诱惑吗? 这似乎很常见,但也似乎不合适 不必要地扩展Sprite类是否会带来很大的内存开销?为什么希望某些内容成为显示列表的一部分?你说:但是,它将包含要显示的内容 如果您的意思是要合成可显示对象,例如,执行以下操作: var container:Spr

我总是试图扩展Sprite类,这样我的对象就可以成为显示列表的一部分,并且还具有EventDispatcher函数,即使它没有任何要显示的内容。但是,它将包含要显示的内容。这很方便,因为这些包含的对象只需引用其容器即可访问显示列表

有人遇到过这种诱惑吗? 这似乎很常见,但也似乎不合适


不必要地扩展Sprite类是否会带来很大的内存开销?

为什么希望某些内容成为显示列表的一部分?你说:但是,它将包含要显示的内容

如果您的意思是要合成可显示对象,例如,执行以下操作:

var container:Sprite = new Sprite();
var image:Sprite = new some_lib_image();
var image2:Sprite = new some_other_lib_image();
container.addChild(image);
container.addChild(image2);
stage.addChild(container);
那么这是完全可以接受的。如果您想创建一个名为ImageContainer的类来管理图像的添加和删除,并使用它来代替Sprite,这也是完全可以接受的。我不认为这是一种诱惑,但除非你在上面的代码中添加了一些有价值的东西,否则我不会这么做

不必要地扩展Sprite类是否会带来很大的内存开销

不特别是。类的大小通常接近于sizeofSprite+sizeofinstanceVariables[],其中instanceVariables[]是您在类中声明的新变量。我不会担心的。组合比继承更昂贵;这是不必要地使用了太多的容器。在一般情况下,我从不担心这个问题,但如果我要在一个粒子系统中创建5000个粒子,我会尽量使每个粒子尽可能简单