فهرست منبع

- added Sprite dispose() instance method, and Sprite property to automatically dispose of Sprite when it's finished animating

Cyle 12 سال پیش
والد
کامیت
065a3c8af0
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) { return; }
             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);