Я разрабатываю игру, которая использует requestAnimationFrame. Вот код для этого.requestAnimationFrame не отменяется
Game.prototype.startLoop = function (arg) {
var parent = this;
(function tick() {
parent.update();
window.animationID = webkitRequestAnimationFrame(tick);
}());
};
Game.prototype.stopLoop = function() {
console.log('cancel the game now');
window.webkitCancelRequestAnimationFrame(window.animationID);
};
Проблема заключается в том, что я получаю сообщение, cancel the game now
, однако игра продолжает работать, потому что animationFrame каким-то образом не отменяется. Я пробовал webkitCancelAnimationFrame
, cancelAnimationFrame
, webkitCancelRequestAnimationFrame
и все версии для запроса рамки анимации в моем браузере: requestAnimationFrame
, webkitRequestAnimationFrame
. Ни одна из комбинаций не работает.
Странно, что если я запустил window.webkitCancelRequestAnimationFrame(window.animationID)
в консоли инспектора webkit, игра прекратится, как ожидалось. Я добавил этот код window.webkitCancelRequestAnimationFrame(window.animationID); console.log('button test')
в атрибут onclick кнопки DOM, и когда я нажимаю на него, игра останавливается, но когда я выполняю JS theDOMButton.click()
, ничего не происходит, но я получаю сообщение «кнопка test».
Вот мой агент пользователя:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Вот jsfiddle:
После изменения этого: http://pastebin.com/ewDXBT9C это работает, но я думаю, что это странно, так как запрос анимации должен остановка без необходимости проверять с переменной в каждом цикле
Прежде всего, используйте прокладку/полипол. Ваш код будет разбит на все, что не является webkit. – phenomnomnominal
спасибо, но я использую webkit, поэтому на данный момент нет необходимости в pollyfills, они ничего не будут делать с моей проблемой. – richie
Можете ли вы упростить код, который у вас есть, в небольшой тест, который может перепрограммировать проблему - в идеале отправьте его как скрипку? Есть хороший шанс, что какое-то другое взаимодействие вызывает проблему. – dc5