2017-01-05 75 views
-2

我必須控制html5 canvas的動畫時間軸。我製作了所有按鈕並編輯了所有代碼。奇怪的是所有按鈕都執行相同的功能。多個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 - 閱讀進度 - ( 「點擊」,函數(){ \t letterA.gotoAndPlay(97) }); VAR 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呢? :) –

+0

我試過,但該網站不會讓我:第 –