Javascript 使用easeljs click事件读取原型变量
我对JS的原型化非常陌生,但对oop不是很熟悉。然而,对于easeljs来说是新的。 话虽如此,我一直在尝试获取一个由点击事件触发的对象变量,但我似乎真的找不到一个合适的方法来实现它 尝试构建可点击的2D板,以下是我的测试代码:Javascript 使用easeljs click事件读取原型变量,javascript,prototype,easeljs,Javascript,Prototype,Easeljs,我对JS的原型化非常陌生,但对oop不是很熟悉。然而,对于easeljs来说是新的。 话虽如此,我一直在尝试获取一个由点击事件触发的对象变量,但我似乎真的找不到一个合适的方法来实现它 尝试构建可点击的2D板,以下是我的测试代码: (function() { //"Class" Brick = function() { this.initialize(); }; var p = Brick.prototype = new
(function() { //"Class"
Brick = function() {
this.initialize();
};
var p = Brick.prototype = new createjs.Container();
p.Container_initialize = p.initialize;
p.initialize = function() {
this.Container_initialize();
};
p.create = function(row, column) {
this.row = row;
this.column = column;
//Shape
this.square = new createjs.Shape();
this.square.graphics.beginFill("green").drawRect(0, 0, brickSize, brickSize);
this.x = (brickSize * column) + (Game.padding * column); // Add some padding
this.y = (brickSize * row) + (Game.padding * row); // Add some padding
this.addChild(this.square);
this.addEventListener("click", function(event) { console.log(this.row)})
};
})();
在这之后,我只需创建几个砖块,在多维数组循环中循环,并将它们添加到舞台上。董事会显示完美,然而,我不断地得到未定义,而陈词滥调。console.logevent.currentTarget.row虽然可以工作,但不确定它是否可行
谢谢 最好不要创建父对象的实例要设置子对象的原型,请使用Object.create并为较旧的浏览器填充:
var p = Brick.prototype = Object.create(createjs.Container.prototype);
您的事件处理程序对此具有错误的值。该值是调用对象,在调用函数时确定,而不是在声明函数时确定。您可以通过以下方式修复此问题:
p.create = function(row, column) {
//.... not changed
var me = this;
this.addEventListener("click", function(event) {
console.log(me.row)})
};
如果您将Chrome或Firefox与firebug一起使用,有时最好只使用console.logthis并单击记录的项目进行更仔细的检查
更多关于原型的信息可以找到