| SimpleCanvasStage = Utilities.createSubclass(Stage, |
| function(canvasObject) |
| { |
| Stage.call(this); |
| this._canvasObject = canvasObject; |
| this.objects = []; |
| this.offsetIndex = 0; |
| }, { |
| |
| initialize: function(benchmark, options) |
| { |
| Stage.prototype.initialize.call(this, benchmark, options); |
| this.context = this.element.getContext("2d"); |
| }, |
| |
| tune: function(count) |
| { |
| if (count == 0) |
| return; |
| |
| if (count < 0) { |
| this.offsetIndex = Math.min(this.offsetIndex - count, this.objects.length); |
| return; |
| } |
| |
| var newIndex = this.offsetIndex - count; |
| if (newIndex < 0) { |
| this.offsetIndex = 0; |
| newIndex = -newIndex; |
| for (var i = 0; i < newIndex; ++i) { |
| if (this._canvasObject.constructor === Array) |
| this.objects.push(new (Stage.randomElementInArray(this._canvasObject))(this)); |
| else |
| this.objects.push(new this._canvasObject(this)); |
| } |
| } else |
| this.offsetIndex = newIndex; |
| }, |
| |
| animate: function() |
| { |
| var context = this.context; |
| context.clearRect(0, 0, this.size.x, this.size.y); |
| for (var i = this.offsetIndex, length = this.objects.length; i < length; ++i) |
| this.objects[i].draw(context); |
| }, |
| |
| complexity: function() |
| { |
| return this.objects.length - this.offsetIndex; |
| } |
| }); |