Javascript更新功能

时间:2016-03-20 00:18:51

标签: javascript html

我正在进行在线游戏开发。我正在尝试制作一个在线FPS游戏,而且我只能达到我需要更新角色的程度。我只是使用绘图和更新功能来保持我的代码简单。当html加载时,我执行两个:(这是必要的吗?)

<body onload='DRAW(); UPDATE();'>

绘图功能将播放器绘制到屏幕上,并且更新应该检查按键以移动角色。我正在尝试使用此更新脚本:

function UPDATE()
{
    update = setInterval(UPDATE, 60);
}

据我所知,它运行正常,因为当我尝试编辑我用于测试网站的在线IDE(c9.io)中的代码时,它会在网站运行时冻结。我也在draw函数中调用eventListeners。 (如果我想每帧测试一个键,这是否合适?)

function DRAW()
{
    window.addEventListener('keydown', function (e) {
        keys.keys = (keys.keys || []);
        keys.keys[e.keyCode] = true;
    });
    window.addEventListener('keyup', function (e){
        keys.keys[e.keyCode] = false;
    });
}

我的问题是:

  • 是否有更简单的方法让每个帧都更新脚本?

  • 我可以用来制作一个JavaScript插件(比如Three.js) 我自己开发这个更容易吗?

非常感谢任何知识。

1 个答案:

答案 0 :(得分:0)

这会让一切都崩溃:

function UPDATE()
{
    update = setInterval(UPDATE, 60);
}

您每60ms递归创建一个新间隔;第一次调用UPDATE时,您创建一个间隔,每隔60ms创建一个新间隔。所有新创建的间隔都是相同的。不知道你真的想在这里做什么。

  

我也在draw函数中调用eventListeners。 (这是正确的吗?   如果我想每帧测试一个键?)

在draw函数中创建eventlistener是很好的,只要你只调用一次这个函数。我想你不会这样。每次调用DRAW()时,都会添加一组新的eventlisteners,你真的不想要它。

你需要的是一种游戏循环形式。解释如何创建FPS游戏比我能做的多一点,但你可以从查看这篇文章开始Anatomy of a video game