вы определяете новую переменную внутри setInterval вместо использования heroVel2 ..
попробовать:
setInterval(function() {
heroVel2 = heroVel1;
console.log(heroVel2);
}, 2000);
Это должно обновить heroVel2 во внешнем объеме как хорошо, как пишут на консоли каждые 2 секунды ,
UPDATE:
ИТАК на основе ваших комментариев стало ясно, что все это делается в непрерывном цикле, поэтому вы получаете спам с console.logs.
Что вы будете делать, это НЕ использовать setInterval и вместо этого проводить сравнение времени. Проблема заключается в том, что при вызове setInterval функция внутри него немедленно вызывается. Поэтому, когда вы выполняете setInterval каждые 10 мс, вы получите console.log каждые 10 мс.
вне вас gameloop определить:
timeLastUpdated = новый Дата() GetTime();.
и в цикле вы проверили, будет ли currentTime - timeLastUpdated> = 2000 , если это так, то вы установите timeLastUpdate на currentTimeMillis. Таким образом, вы получите действие, которое должно произойти каждые 2000 miliseconds.
timeLastUpdated = new Date().getTime(); // Gets the time in millis
function gameLoop() {
var currentTimeMillis = new Date().getTime(); // For each trip through this loop, set currentTimeMillis to the currentTime.
if(currentTimeMillis - timeLastUpdated >= 2000) { // has it been more than 2000milis since last?
heroVel2 = heroVel1;
console.log(heroVel2);
timeLastUpdated = currentTimeMillis;
}
FIDDLE
Поместите консоль в функцию. Теперь переменная записывается в консоль, и значение изменяется через две секунды. – Barry