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