Did you ever find a fix for this? Cause I'm having the same problem:
spawning a lot of particles and removing them after some time. But
eventually I get "Resource limit for this resource type exceeded.". My
stack at that moment is slightly different though:
flash.display3D::Context3D/createVertexBuffer
away3d.core.base::SubGeometry/getUVBuffer at src\away3d\core\base
\SubGeometry.as:172
away3d.core.base::SubMesh/getUVBuffer at src\away3d\core\base
\SubMesh.as:150

The rest of the stack appears to be the same as yours.
I haven't updated Away3D for a while though (since begin April, scared
it will break the current code :P)

On 11 apr, 19:56, Josh Beckwith <[email protected]> wrote:
> 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 tolimitthe 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:Resourcelimitfor thisresourcetypeexceeded.
>         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