2013-12-13 1 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; 
} 

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

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

Большое спасибо за помощь.

Я удалил ненужные части кода, чтобы сэкономить место.

Так что я просто пытался использовать функцию как результат OnChange:

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

Это не представляет синтаксические ошибки, но анимация не медлит пробеги хотя переменная скорость делает обновление в информационной панели очень быстро. :(

+0

Возможно, я ошибаюсь, но могли бы вы просто поместить свои функции обновления в это событие 'onChange'? – Robb

+0

Привет @Robb, я пробовал это, но мне это не похоже. Ожидает двоеточие, но я не могу дать ему один – null

+0

@Robb - Привет, обновленный вопрос, когда мне кажется, что я приближаюсь. – null

ответ

2

Вы должны вызова renderAll(), привязка фактически возвращает функцию, которая будет использоваться в качестве обработчика Просто попробуйте этот код:.

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

И дайте мне знать, если это помогло

?
+0

жениться меня. Сегодня вечером я могу спать. – null

+1

;) удачи с javascript – arty

+0

спасибо, arty, вы вообще использовали библиотеку ткани? – null

 Смежные вопросы

  • Нет связанных вопросов^_^