-1

何らかの理由で、アスタリスク行で作成された player_controller インスタンス変数は、以下のupdate関数で呼び出すことができません。このコードを実行すると、アスタリスクが付いた 2 行目 (console.log) が認識され、指定された変数が player_controller からコンソールに出力されます。ただし、以下の update 関数 (二重アスタリスクの行) で player_controller を使用しようとすると、「TypeError: this.player_controller is undefined.」というエラーが発生します。

また、太字の行がコメントアウトされている場合、他の行 (同様に作成された変数がある) はエラーなしで実行されることに注意してください。

ここで何が起こっているのか誰か教えてもらえますか?

    function Engine(){
    var GRAVITY = 0.3;

    this.map_loader = new MapLoader();
    *this.player_controller = new PlayerController();*
    this.map = this.map_loader.load_next_map();
    *console.log(this.player_controller.keys_down.A);*

    this.update = function(){
        **this.player_controller.handle_input(this.map.player);**
        gravity(this.map.player);
        this.map.player.x += this.map.player.dx;
        this.map.player.y += this.map.player.dy;
        ...
        ...

編集:コードブロックで書式設定を行うことができないことに気づきませんでした.

ここにアプリへのリンクがあります。このページで Web コンソールを表示すると、積み上げについて話しているエラーが表示されます。http://lukescode.net/senior_project_game/main.html

4

2 に答える 2

0

おそらく、エンジンを次のように作成します

var engine = Engine();

それ以外の

var engine = new Engine();
于 2013-10-13T00:20:48.830 に答える