2016-03-20 7 views
1

オンラインでゲームを開発しています。私はオンラインFPSゲームを作ろうとしており、私は自分のキャラクターを更新する必要があるところまでしか行きませんでした。私は描画と更新機能だけを使用して、コードを簡単に保つために努力しています。 HTMLの負荷は、私は両方を実行する場合:(これは必要ですか?)JavaScriptの更新機能

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

ドロー機能は、画面にプレイヤーを引き込み、そして更新が文字を移動するためのキー入力をチェックすることになっています。私はサイトをテストするために使用している私のオンラインIDE(c9.io)に私がしようとするので

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

、私の知る限りでは、それが正常に動作していると編集コード:私はこれを使用してスクリプトの更新をしようとしていますサイトが実行されているときにフリーズします。私はまた、描画関数で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など)はありますか?

ご迷惑をおかけして申し訳ございません。

答えて

0

これはすべてのクラッシュ作る:あなたが再帰的にすべての60msの新しい間隔を作成している

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

を。最初にUPDATEを呼び出すと、60msごとに新しい間隔を作成する間隔が作成されます。すべての新規作成間隔は同じです。あなたが実際にここでやりたいことを本当に知りません。

私はdraw関数でeventListenersも呼び出しています。 (私はダウンキーのすべてのフレームをテストしたい場合は、この適切な ですか?)

それはあなたが一度だけ、この関数を呼び出して、描画機能にイベントリスナーを作成するために、罰金です。私はあなたがしないと思います。 DRAW()を呼び出すたびに、新しいイベントリスナーのセットが追加され、あなたは本当にそれを望んでいません。

必要なものは、ゲームループの一種です。 FPSゲームを作成する方法については、私ができることよりももう少しですが、この記事を読むことで始めることができますAnatomy of a video game

+0

DRAW()は、HTMLの一部であるしかし、setIntervalに関する情報をありがとう。私はそれがクラッシュしていることを知っていた、私はちょうど理由を理解できなかった。私は記事をチェックします –

+0

@TaylorBrown核チェーン反応と同等であると考えてください。 960msだけ走った後、すでにパラレルで65536のインターバルが走っており、60msごとに倍増し続けます。あなたのコンピュータはそれを処理できず、ブラウザがクラッシュします。 – dannyjolie

+0

良いアナロジーは、今より多くの意味があります。 –

関連する問題