画布和 Javascript 对象上的 Javascript 动画
Javascript Animation on Canvas and Javascript Objects
我正在玩弄一些画布和简单的动画 - 我有一个简单的类来渲染我的地图。
var Map = Class.extend({
init: function () {
//Setup stuff
},
DrawMap: function (canvas, camera) {
//Render the map
}
});
我的核心应用程序代码也在课堂上
var App = Class.extend({
init: function (canvas) {
//Load Stuff
},
GameLoop: function () {
this.map.DrawMap(this.canvas, this.camera);
}
});
现在使用下面的代码可以正常工作,我的地图可以渲染。
var canvasMap = document.getElementById('cmap');
app = new App(canvasMap);
setInterval(function () {
app.GameLoop();
}, 100);
但是 - 我知道这并不理想,并且正在尝试转换为此(http://paulirish.com/2011/requestanimationframe-for-smart-animating/)所以我调整了我的代码。
我将上面的代码添加到我的索引页
window.requestAnimFrame = (function () {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function (/* function */callback, /* DOMElement */element) {
window.setTimeout(callback, 1000 / 60);
};
并更改了我的初始化代码(用于使用设置间隔)
var canvasMap = document.getElementById('cmap');
app = new App(canvasMap);
requestAnimFrame(function() { app.GameLoop(); });
现在基于一些调试,这里发生的事情是 App.GameLoop 方法被调用一次(我在游戏循环方法中添加了一个日志)。然后不再被召唤。我想这是对我对 JS 对象的经验所做的。我的背景是 C#,所以这对我来说相对较新。
为什么这只叫一次?
我已经
解决了这个问题,我错过了递归。
var initAll = function () {
$(document).ready(function() {
var canvasMap = document.getElementById('cmap');
app = new App(canvasMap);
mainLoop();
});
};
var mainLoop = function() {
requestAnimFrame(mainLoop);
app.GameLoop();
};
相关文章:
- JavaScript动画从不执行
- 最小化时暂停Javascript动画
- 多个链接的Javascript动画
- 使用 JavaScript 动画通过箭头键移动矩形
- javascript动画不适用于chrome和IE
- Javascript动画不稳定
- 即使在另一个选项卡中,也要继续使用Javascript动画
- 小型JavaScript动画集成
- 我应该如何对这个简单的javascript动画进行逆向工程
- JAVASCRIPT-动画块消失,就像它出现时一样
- Javascript动画的行为不符合预期
- 在javascript动画中创建许多类似的元素
- Javascript动画计时
- 如何让javascript动画在href运行之前完成
- 用于Javascript动画的工具
- Javascript动画和360度图像
- JavaScript-动画形状在HTML5<画布>
- 我可以't在时间上限制javascript动画
- 如何使用javascript动画化graphviz
- JavaScript动画运动