私は HTML5 (および OO Javascript) を学習中で、単純なゲーム エンジンを作成しようとしていますが、キャンバスへのレンダリングは非常に奇妙な条件下で機能します。ここにページへのリンクがあり、ここに私のindex.htmlがあります:
<html>
<head>
<script type="text/javascript">
function load()
{
var game = new Game();
game.start();
}
</script>
<title>Game</title>
<style>
canvas
{
outline:0;
border:1px solid #000;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body onload="load()">
<canvas id='c'></canvas>
<script src="classes/Tuple.js"></script>
<script src="classes/Rect.js"></script>
<script src="classes/Sprite.js"></script>
<script src="classes/Game.js"></script>
</body>
</html>
最初に読み込まれると、Firefox 11.0 では NS_ERROR_DOM_TYPE_MISMATCH_ERR 例外が発生し、Chrome 18.0では TypeError例外が発生します。それを機能させるには:
Firefox 11.0
- アドレス バーで URL を選択し、手動で Enter キーを押すか、
- 更新ボタンをクリックするか、
- F5 を押します。
クロム 18.0
- アドレス バーで URL を選択し、手動で Enter キーを押すか、
- 更新ボタンをクリックするか、
- F5 またはを押す
- Shift/Ctrl + F5 を押します。
私が推測していること - 推測ですが、最初のページの読み込み中に呼び出されるまでに、1 つ以上の .js ファイルが利用できない/準備ができていないようです。Firebug で数回試してみると、最初のページ リクエストでスプライト イメージが読み込まれないようです。
おそらく、いくつかの .js ファイルは、Game() へのインスタンス化が行われているときにまだダウンロードされており、キャッシュされており、すべてが 2 回目のページの読み込みによってのみ利用可能になるのでしょうか?
何か案は?ありがとうございます。