2017-01-05 7 views
-2

Я должен контролировать временную шкалу анимации для холста html5. Я сделал все кнопки и редактировал все коды. странно все кнопки выполняют ту же функцию.несколько кнопок ADOBE ANIMATE CC для управления временной шкалой не работает

this.stop() 
//---------------------------------------------------------// 
this.letterA.addEventListener("click", fl_MouseClickHandler.bind(this)); 

function fl_MouseClickHandler() 
{ 
    this.gotoAndPlay(32); 
} 

//---------------------------------------------------------// 

//---------------------------------------------------------// 
this.letterB.addEventListener("click", fl_MouseClickHandler.bind(this)); 
} 
function fl_MouseClickHandler() 
{ 
    this.gotoAndPlay(212); 
} 
+0

также, этот код «сгенерирован» adobe CC. так как я не кодер, просто скудный аниматор, я просто скопировал и вставлял то же самое, что редактировал имена символов. –

ответ

1

Прочтите о function hoisting; заявления функции поднимаются к вершине-оф-сферы, так что ваш код эквивалентен

function fl_MouseClickHandler() { 
    this.gotoAndPlay(32); 
} 

function fl_MouseClickHandler() { 
    this.gotoAndPlay(212); 
} 

... 
this.stop()  
this.letterA.addEventListener("click", fl_MouseClickHandler.bind(this)); 
this.letterB.addEventListener("click", fl_MouseClickHandler.bind(this)); 

Одно решение было бы использовать функциональные выражения:

var that = this; 
this.letterA.addEventListener("click", function() { that.gotoAndPlay(32); }); 

или если вы настаиваете, чтобы использовать bind

this.letterA.addEventListener("click", (function() { this.gotoAndPlay(32); }).bind(this)); 
+0

Я пробовал это: this.stop(); var letterA = this; this.letterA .addEventListener ("щелчок", функция() { \t letterA.gotoAndPlay (97) }); вар letterB = это; this.letterB.addEventListener ("щелчок", функция() { \t letterB.gotoAndPlay (108) }) и, похоже, сработал. Я попробую его в главном файле и посмотрю, сработало ли оно. Большое спасибо! –

0

Из того, что я могу сказать, вы связывание той же функции, чтобы две разных кнопка нажмите события. У вас есть два разных определения этой же функции. Один из них, скорее всего, написан поверх другого, и поэтому обе кнопки вызовут fl_MouseClickHandler, который вызовет gotoAndPlay с той же меткой времени.

Быстрое исправление может быть просто изменить имя fl_MouseClickHandler:

function fl_MouseClickHandlerA() { 
    this.gotoAndPlay(32); 
} 

function fl_MouseClickHandlerB() { 
    this.gotoAndPlay(212); 
} 

this.letterA.addEventListener("click", fl_MouseClickHandlerA.bind(this)); 
this.letterB.addEventListener("click", fl_MouseClickHandlerB.bind(this)); 

Кроме того, вы должны смотреть, как вы используете «это», как вы не можете быть ограничены тем, что вы думаете.

+0

также работал !!! большое спасибо –

+0

upvote then? :) –

+0

Я пробовал, но сайт не позволял мне: p –