我正在使用 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'”
答案 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);
}
}