私の質問を公開させてください: 私はメイン スクリプトを持っています。ユーザーのアクションに応じて、多くの JavaScript ファイルの 1 つをロードする「ゲーム」オブジェクトのインスタンスを作成するとしましょう。それらを「レベル」と呼びましょう。 D これらのファイルにはさまざまなオブジェクトが含まれています。たとえば、level1 のオブジェクトを含む「level1.js」、次に「level2.js」などです。
level1.js などのレベル スクリプトがロードされるたびに、「game」のインスタンスがオブジェクト level1 のインスタンスを作成し、それをローカル変数に格納します。
私が見つけた唯一の方法は、すべての「レベル」スクリプトの最後に、常に同じ名前を持ち、現在のレベルの定義を指すグローバル変数を記述することです。その後、ゲーム中にレベル スクリプトが読み込まれると、このグローバル変数を使用して現在のレベルのインスタンスを作成します。グローバル変数を使わずにそれを行う方法があるかどうか知りたいです。
簡単な例を次に示します。
game.js で:
function Game() {
var levelCurrent = null;
var scriptCour = document.createElement("script");
scriptCur.type = "text/javascript";
scriptCur.onload = function() {
levelCurrent = new level();
}
}
そして、各「レベル」スクリプト (level1.js、level2.js) で:
function level1() {
//definition of the level
//...
}
level = level1;
または、同様に:
level = function() {
//definition of the level
//...
}
私の質問を十分に説明したかどうかわかりませんが、誰かが答えを持っていれば... ありがとう!game のインスタンスは自己実行関数を使用して作成されるため、次のようなローカル変数であることに注意してください。
(function() {
var game = new Game();
})();
ありがとうございました!