试图让一些按钮做同样的事情

时间:2018-05-17 20:27:41

标签: javascript jquery-animate createjs easeljs

我正在使用 Animate 来制作动画。我正在让所有按钮完成他们应该做的事情。现在,我坚持以下。我想为多个按钮分配相同的动作,这是因为按钮出现在许多不同的帧上,所以这就是我得到的但是我收到了错误。

       var btns = ["btncasco","btncasco1","btncasco2"];

       btns.forEach( btnsIteratee.bind(this)); 

 function btnsIteratee(item){
    this[item].addEventListener("click", function(event){ 
        this.gotoAndStop(0);
    });
}

我希望能够点击任何引用的按钮名称并使它们转到第0帧。任何关于错误的想法?

这是我得到的错误:

  

“未捕获的TypeError:无法读取未定义的属性'addEventListener'”

2 个答案:

答案 0 :(得分:0)

从你提供的少量代码中可以看出,有些问题可能导致this的意外行为。然而。以下内容:

btns.forEach( btnsIteratee.bind(this));

可以从绑定一次中受益,因为this的引用不会因forEach循环的每个实例而改变。然后传入数组项。例如:

var btns = ["btncasco", "btncasco1", "btncasco2"];

function btnsIteratee(item) {
    item.addEventListener("click", function(event) { 
        this.gotoAndStop(0);
    });
}

btnsIteratee = btnsIteratee.bind(this);
btns.forEach(btnsIteratee); 

以上是伪代码,因为您的示例

提供的内容不多

答案 1 :(得分:0)

感谢帖子。我最终使用这一系列按钮的代码块对此进行了排序。

var btntres = ['btnlumbrera2' , 'btnlumbrera3' ,'btnlumbrera4' ,'btnlumbrera5' ,'btnlumbrera6' ,'btnlumbrera7', 'btnlumbrera8', 'btnlumbrera9', 'btnlumbrera10', 'btnlumbrera11', 'btnlumbrera12', 'btnlumbrera13', 'btnlumbrera14', 'btnlumbrera15', 'btnlumbrera16', 'btnlumbrera17', 'btnlumbrera18']; 

btntres.forEach( btnsIteratee3.bind(this) ); 
function btnsIteratee3(item){


if (this[item] && !this[item].hasEventListener('click')) {
    this[item].addEventListener("click", hyandler.bind(this));
} else {

    console.log('item no existe', item);
}

function hyandler(event){ 
    this.gotoAndStop(4);
}
}