2011-10-21 14 views
0

私はここにゲームエンジンを開発しています: http://synodins.com/apps/tank_fight しかし、今や何らかの理由でもう動作しません。 Raphaelモジュールを起動できません。mozilla Webデバッガでサイトを実行すると、 "Raphael is not defined"と表示されます。 しかし、それはraphael.jsモジュールで非常に明確に定義されているので意味がありません。JavaScriptのゲーム、モジュールラプラエルは定義されていません

また、時々私は試してみると、ゲームはうまく動作します。 それを動作させる明確なパターンはありません。
私はHello world 1を印刷しようとする前に、Hello world 2は試してみました。
誰でも問題の内容を確認できますか?

+0

私は散発的に読み込まれます。ときどきキーコントロールを取得するだけで、2つの可動タンクとテーブルが得られることもあります。 FF "7.0"となる。 – Bojangles

+0

私のゲームは死んだから戻ってきた! vuhu、ありがとう! –

答えて

5

load_scriptのブロックは、スクリプトを非同期にロードします。これが明確なパターンがないように見える理由です。

var playing_area = Raphael(0,50,1600,1600); 

が呼び出されます。

ラインその時によって(Raphaelが定義されていること、そのためと)読み込まれるRaphaël.jsの保証はありません。

外部スクリプトで定義された変数を使用する前に、ドキュメント全体が準備できるまで待つ必要があります。通常の状況では、これは文書のonloadイベントです。 jqueryのようなさまざまな図書館でも、自分の「準備ができた」イベントが提供されています。

マークアップを使用するのではなく、以下のようにスクリプトを読み込む理由はありますか?

<script src="raphael.js"></script> 
+0

それはずっと私は古い方法をした理由を覚えていないが、これは動作します。 –

1

必要に応じてスクリプトを読み込んでいます。これにより、最初のページの読み込み速度が向上します。しかし、その直後にraphael.jsでコードを実行しようとしますが、jsファイルの読み込みには時間がかかるため、関数を呼び出す前にロードされていることを確認する必要があります。

あなたはModernizer.load(を見ても) - これは、リソースのロードを同期させ、ロードが完了したときにコールバックを追加するのに役立ちます:http://www.modernizr.com/docs/#load

1

は、あなたが何かの前に含まれる「Raphaël.jsの」を移動しようとしたことがありそれ以外は?それ以上のスクリプトが必要な時点でRaphaelが定義されていない可能性があります。

関連する問題