Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用easeljs click事件读取原型变量_Javascript_Prototype_Easeljs - Fatal编程技术网

Javascript 使用easeljs click事件读取原型变量

Javascript 使用easeljs click事件读取原型变量,javascript,prototype,easeljs,Javascript,Prototype,Easeljs,我对JS的原型化非常陌生,但对oop不是很熟悉。然而,对于easeljs来说是新的。 话虽如此,我一直在尝试获取一个由点击事件触发的对象变量,但我似乎真的找不到一个合适的方法来实现它 尝试构建可点击的2D板,以下是我的测试代码: (function() { //"Class" Brick = function() { this.initialize(); }; var p = Brick.prototype = new

我对JS的原型化非常陌生,但对oop不是很熟悉。然而,对于easeljs来说是新的。 话虽如此,我一直在尝试获取一个由点击事件触发的对象变量,但我似乎真的找不到一个合适的方法来实现它

尝试构建可点击的2D板,以下是我的测试代码:

(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并单击记录的项目进行更仔细的检查

更多关于原型的信息可以找到