私が書いているこのエンジンには本当にイライラしていますが、それは問題ありません。それが Stack Overflow の目的です。だから私はすべてのゲーム「エンティティ」をオブジェクトからプロトタイピングしています:
function Scene(name, description) { // Initialize the Scene Object
/* VARIABLES */
this.entities = [];
/* METHODS */
};
Scene.prototype.addEntitiy = function(entity) { // Add an entity to this scene
this.entities.push(entity);
}
簡単にするために、重要でないコード (他の変数とメソッド) を削除しました。ご覧のとおり、Scene は addEntity(entity) のプロトタイプを作成しています。コードの後半で 2 つの Scene オブジェクト (Scene1、Scene2) をインスタンス化します。Scene1 は問題ないようです。シーン 2 は次のとおりです。
// Scene Two
var Scene2 = new Scene('Play Game', 'Actual game screen for playing Pong!');
Scene2.addEntity(GameBall);
Engine.scenes.push(Scene2);
Engine.scenes はすべてのシーンを保持します。繰り返しますが、Scene1 (addEntity 呼び出しが 1 つある新しいシーン) ではまったくエラーはありません。ただし、シーン 2 は次のように主張します。
TypeError: Scene2.addEntity is not a function
ところで、Scene1 はうまくいきましたか? また、ロードする 2 番目のエンティティを追加するまで、Scene2 は正常に機能しました (いくつかの変数値を除いて、理論的には GameBall と「同一」です)。したがって、徹底的にするために、エラーが表示されたらすぐに新しいエンティティをコメントアウトしました。まだ関数ではありません。新しい(問題のある?)行を完全に削除しましたが、まだ関数ではありません。それ以来ずっとそうです。Chrome と Firefox は両方とも、これは機能ではないと報告しています。
前もって感謝します。