فهرست منبع

Merge pull request #52 from cyle/master

Added Sprite dispose() instance method and disposeWhenFinishedAnimating property
deltakosh 12 سال پیش
والد
کامیت
042ba6a66b
2فایلهای تغییر یافته به همراه13 افزوده شده و 2 حذف شده
  1. 12 0
      Babylon/Sprites/babylon.sprite.js
  2. 1 2
      Babylon/Sprites/babylon.spriteManager.js

+ 12 - 0
Babylon/Sprites/babylon.sprite.js

@@ -20,6 +20,7 @@
     BABYLON.Sprite.prototype.cellIndex = 0;
     BABYLON.Sprite.prototype.invertU = 0;
     BABYLON.Sprite.prototype.invertV = 0;
+	BABYLON.Sprite.prototype.disposeWhenFinishedAnimating = false;
 
     BABYLON.Sprite.prototype._animationStarted = false;
     BABYLON.Sprite.prototype._loopAnimation = false;
@@ -59,8 +60,19 @@
                     this.cellIndex = this._fromIndex;
                 } else {
                     this._animationStarted = false;
+					if (this.disposeWhenFinishedAnimating) {
+						this.dispose();
+					}
                 }
             }
         }
     }
+
+	BABYLON.Sprite.prototype.dispose = function() {
+		for (var i = 0; i < this._manager.sprites.length; i++) {
+			if (this._manager.sprites[i] == this) {
+				this._manager.sprites.splice(i, 1);
+			}
+		}
+	}
 })();

+ 1 - 2
Babylon/Sprites/babylon.spriteManager.js

@@ -100,10 +100,9 @@
         var offset = 0;
         this._vertices.length = max * this._vertexStrideSize;
         for (var index = 0; index < max; index++) {
+			if (this.sprites[index] == undefined) { continue; }
             var sprite = this.sprites[index];
-
             sprite._animate(deltaTime);
-
             this._appendSpriteVertex(offset++, sprite, 0, 0, rowSize);
             this._appendSpriteVertex(offset++, sprite, 1, 0, rowSize);
             this._appendSpriteVertex(offset++, sprite, 1, 1, rowSize);