4
我有一個畫布對象,我可以打電話像這樣Canvas對象和另一個對象內的多個實例?
var canvas = new Canvas();
畫布對象也有很多的功能,在它的原型。該對象本質上創建一個畫布元素,並具有幾個功能,如setWidth
,getContext
等
我也有一個Layer
對象,實質上是一個具有附加功能的畫布。我認爲將Layer
的原型設置爲Canvas
是一個好主意。這工作很好,一切都很好。
當我想使用多個圖層時,問題就開始了,因爲每個圖層都應該有自己的畫布。但是由於畫布是Layers原型,所以原型只指向一個畫布元素。因此,當我開始使用多個圖層時,由於圖層原型中的畫布元素指向同一個畫布對象,因此畫布始終會被覆蓋。
我希望迄今爲止我有道理!
我知道我可以在畫布添加到層的屬性,但是這樣而不是做,
layer.setWidth(900);
我會做
layer.canvas.setWidth(900);
我想我的問題是,如何我可以繼承Canvas
對象函數,但在實例化一個新圖層時,是否可以用它創建一個新的畫布元素?
按照要求的代碼(簡體)
var carl = {};
carl.Canvas = (function() {
"use strict";
function Canvas(config) {
this._init(config);
};
Canvas.prototype._init = function(config) {
this.element = document.createElement("canvas");
this.context = this.element.getContext("2d");
};
Canvas.prototype.setWidth = function(width) {
this.element.width = width;
};
Canvas.prototype.getWidth = function() {
return this.element.width;
};
Canvas.prototype.setHeight = function(height) {
this.element.width = height;
};
Canvas.prototype.getHeight = function() {
return this.element.height;
};
Canvas.prototype.getContext = function() {
return this.context;
};
return Canvas;
}}();
carl.Layer = (function() {
"use strict";
function Layer() {
};
Layer.prototype = new carl.Canvas();
return Layer;
})();
我需要我的代碼在IIFE,感謝您的回答,我會現在就來試試吧:) – user2251919 2013-05-14 11:30:07
是謝謝你,救了我的天! – user2251919 2013-05-14 19:22:30