2013-12-13 63 views
0

我對JavaScript比較陌生,遇到了一些問題,希望能幫到您。我正在使用畫布創建各種動畫。從另一個內部調用函數 - javascript

我有一個被按下相關按鈕時調用的函數:

//for starting the animation 
startSim.onclick = function(){ 

    //obtain speed value from the control panel. 
    var speed = 10000/(new Number(speedControl.value)); 
    //stuff 
    //animation process 
     object.animate('top', '+='+canvas.height,{ 
      duration: speed, 
      abort: function(){ 
       var returnedBool; 
       //Pause is pressed, simulation pauses 
       if(pause){ 
       //stuff 
       } 
       //restart required 
       if(restart){ 
        //stuff 
       } 
       //option here to save data? 
       return returnedBool; 
      },//end abort callback 

      onChange: canvas.renderAll.bind(canvas), 
      onComplete: function(){ 
       //stuff 
      } 
     });//end animate callback 
}; 

我想要做的就是調用某些其他功能,而上面的動畫是活動的。

我知道我是如何使用Java或C++來做到這一點,但我似乎無法調用該函數。

我有一個顯示面板應該輸出各種信息 - 隨着動畫完成變量將會改變,我希望它們在屏幕上輸出並在更改時更新。

我用一個簡單的功能測試:

function updateInfoPanel(testSpeed){ 
    var test = document.getElementById('currentSpeed'); 
    test.innerHTML = test.innerHTML + testSpeed; 
} 

我想我需要調用這個主動畫循環,如果我把它稱爲它的罰款,但很明顯,只顯示一次變化之前。有人能告訴我我要去哪裏嗎?

我也有一個基本的碰撞檢測功能,但不在animate循環內,我認爲這些問題是相關的。

非常感謝您的幫助。

我刪除了不必要的代碼部分以節省空間。

所以我只是試圖用功能的onChange的結果:

onChange: function(){ 
       canvas.renderAll.bind(canvas); 
       updateInfoPanel(speed); 
      }, 

這不存在語法錯誤,但雖然速度變量確實更新的信息面板中的動畫沒有不散運行很快。 :(

+0

我可能會誤解,但你可以簡單地把你的更新函數放在'onChange'事件嗎? – Robb

+0

Hi @Robb,我試過了,但它似乎並不喜歡它。期待冒號,但我不能給它一個 – null

+0

@Robb - 你好,再次提問,感覺就像我越來越接近 – null

回答

2

您需要呼叫 renderAll(),綁定實際上是返回一個函數用作處理程序就試試這個代碼:

onChange: function(){ 
       canvas.renderAll();//.bind(canvas); 
       updateInfoPanel(speed); 
      }, 

讓我知道,如果它幫助

+0

marry我。今晚,我可以睡了。 – null

+1

;)祝你好運與javascript – arty

+0

謝謝arty,你有沒有使用過織物庫? – null

相關問題