我知道直接的答案不在这里,但我和几个似乎认为可能的人谈过。这是我的代码:
var Tile = function(xPos, yPos, state) {
this.createTile(xPos, yPos, state);
}
Tile.prototype = new createjs.Shape();
Tile.prototype.createTile = function(xPos, yPos, state) {
// debugger;
this.x = xPos;
this.y = yPos;
this.onState = state;
var fillCommand = this.graphics.beginFill("#969696").command;
var shapeCommand = this.graphics.drawRoundRect(0, 0, 50, 50, 10).command;
this.on("click", function(){this.toggleState(fillCommand);});
stage.addChild(this);
stage.update();
}
Tile.prototype.toggleState = function(fillCommand) {
if (this.onState === true) {
fillCommand.style = "#969696";
stage.update();
this.onState = false;
} else if (this.onState === false) {
fillCommand.style = "#000000";
stage.update();
this.onState = true;
}
}
如果有人熟悉它,则在easeljs中实现Shape()。基本上我在这里创建一个Tile类来表示小圆角正方形,这些正方形会在按下时改变颜色。语法方面我没有在网页上显示任何错误。我已经有了正确的代码来调用Tile和已经设置的画布,或者我也将代码放在这里。我在这里问的是,我在这个实现中有正确的想法吗?
答案 0 :(得分:1)
它有点不同寻常,但如果它适合你,那么对你有更大的力量。从Shape继承的更常见的方法是做类似
的操作Tile.prototype = Object.create(createjs.Shape.prototype);
Tile.prototype.constructor = Tile;
Javascript中的继承有点奇怪,所以,除非你有时间和精力去深陷兔子洞,否则我会建议坚持使用正常工作的东西。如果您确实想要阅读更多内容,这篇文章可以帮助您入门:http://ejohn.org/blog/simple-javascript-inheritance/
答案 1 :(得分:1)
EaselJS撰稿人 - 您绝对可以扩展EaselJS课程。实际上有一个tutorial on the EaselJS site。正如其他人所提到的,JavaScript继承是一种痛苦,并不一定是最好的方法(例如,我总是编写形状/精灵而不是从它们继承。但它完全有可能,只需看看EaselJS层次结构:{ {1}}。
使用您的示例,您应该使用教程中的方法,您可以在其中覆盖初始化,并确保调用超类版本。它有点脏,但广泛使用直到EaselJS 0.7.1(最新版本)。
新方式
更好的是,最新版本的CreateJS(仅在GitHub中作为NEXT版本提供,应该很快被标记并发布到CDN!)有一个全新的继承模型,更容易实现自动注入超级方法,包括调用超级构造函数的能力。
EventDispatcher > DisplayObject > Bitmap
这样更清洁,更易于使用,并且在我们的测试中效果很好!
希望有所帮助:)