Попытка заставить некоторые кнопки сделать то же самое - PullRequest
0 голосов
/ 17 мая 2018

Я использую Animate для создания анимации.Я нахожусь в процессе получения всех кнопок, чтобы сделать то, что они должны.Прямо сейчас я застрял со следующим.Я хотел бы назначить нескольким кнопкам одно и то же действие, потому что кнопки появляются на разных кадрах, поэтому я получил это, но получаю сообщение об ошибке.

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

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

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

Я хочу иметь возможностьщелкнуть по любому из названных имен кнопок и заставить их перейти к кадру 0. Любое представление о том, что не так?

Это ошибка, которую я получаю:

"Uncaught TypeError: Невозможно прочитать свойство 'addEventListener' из неопределенного "

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

спасибо за сообщения.Я наконец разобрался с этим, используя этот кусок кода для каждой серии кнопок.

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);
}
} 
0 голосов
/ 17 мая 2018

Из небольшого количества предоставленного вами кода немного сложно отличить, что еще происходит, что может вызвать неожиданное поведение 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); 

Выше приведен псевдокод, поскольку в вашем примере не так уж и много

...