Game: http://positlabs.com/files/code/drive/

I'm making a driving game of sorts. I made a dust effect that spawns a
textured plane on enterframe 25% of the time. This plane grows for
some time, and then it's removed from the scene.

I made sure to limit the number of planes being displayed to 25.

The game crashes after some time due to running out of resources for
vertices or something like that. I don't think the planes are being
disposed of properly.

Here's the class:

package {
        import away3d.primitives.Plane;
        import flash.events.TimerEvent;
        import flash.geom.Vector3D;
        import flash.utils.Timer;

        public class SmokeParticle extends Plane {

                public static var globalCount : int;
                public static var collection : Vector.<SmokeParticle> = new
Vector.<SmokeParticle>(26, false);

                private var fadetimer : Timer = new Timer(100);

                public function SmokeParticle(pos : Vector3D, rotY : Number) {
                        super(Materials.SMOKE_MAT, 128, 128);

                        if(globalCount > 25) {
                                destroy(collection[0]);
                        }

                        position = pos;
                        rotationY = rotY + Math.random()*31 - 15;

                        Drive.view.scene.addChild(this);
                        collection.push(this);
                        globalCount++;

                        fadetimer.addEventListener(TimerEvent.TIMER, fade);
                        fadetimer.start();

                }

                private function fade(e : TimerEvent) : void {
                        scaleX += .3;
                        scaleY += .3;

                        if (fadetimer.currentCount == 15)destroy(this);
                }

                private function destroy(target : SmokeParticle) : void {
                        if(target != null){
                                collection.shift();
                                target.dispose(false);
                                Drive.view.scene.removeChild(target);
                                
target.fadetimer.removeEventListener(TimerEvent.TIMER, fade);
                                target.fadetimer.stop();
                                globalCount--;
                        }
                }
        }
}

And here's the error I get:
Exception fault: Error: Error #3691: Resource limit for this resource
type exceeded.
        at flash.display3D::Context3D/createVertexBuffer()
        at away3d.core.base::SubGeometry/getVertexNormalBuffer()[C:\Users
\Beeker\workspace\Drive\src\away3d\core\base\SubGeometry.as:192]
        at away3d.core.base::SubMesh/getVertexNormalBuffer()[C:\Users\Beeker
\workspace\Drive\src\away3d\core\base\SubMesh.as:130]
        at away3d.materials.passes::DefaultScreenPass/render()[C:\Users\Beeker
\workspace\Drive\src\away3d\materials\passes\DefaultScreenPass.as:377]
        at away3d.materials::MaterialBase/renderPass()[C:\Users\Beeker
\workspace\Drive\src\away3d\materials\MaterialBase.as:308]
        at away3d.core.render::DefaultRenderer/drawRenderables()[C:\Users
\Beeker\workspace\Drive\src\away3d\core\render\DefaultRenderer.as:184]
        at away3d.core.render::DefaultRenderer/draw()[C:\Users\Beeker
\workspace\Drive\src\away3d\core\render\DefaultRenderer.as:109]
        at away3d.core.render::RendererBase/executeRender()[C:\Users\Beeker
\workspace\Drive\src\away3d\core\render\RendererBase.as:308]
        at away3d.core.render::DefaultRenderer/executeRender()[C:\Users\Beeker
\workspace\Drive\src\away3d\core\render\DefaultRenderer.as:88]
        at away3d.core.render::RendererBase/render()[C:\Users\Beeker\workspace
\Drive\src\away3d\core\render\RendererBase.as:289]
        at away3d.core.render::DefaultRenderer/render()[C:\Users\Beeker
\workspace\Drive\src\away3d\core\render\DefaultRenderer.as:79]
        at away3d.containers::View3D/render()[C:\Users\Beeker\workspace\Drive
\src\away3d\containers\View3D.as:254]
        at Drive/onEnterFrame()[C:\Users\Beeker\workspace\Drive\src\Drive.as:
262]

Reply via email to