JavaScriptオブジェクトで奇妙な動作をするSetInterval

リス

私はキャンバスゲームに取り組んでおり、これを達成するためにオブジェクトとメソッドを使用しようとしています。今、私はそれで問題に遭遇しました。説明するのはちょっと難しいです。基本的に、ランダムに動き回ると思われる正方形がたくさんあります。squareオブジェクト内のメソッドは、setIntervalメソッドを使用して、1/10秒ごとに正方形を移動します。10秒ごとに新しい正方形が追加されます。新しい正方形が追加されると、問題が発生します。1マスを除くすべてが移動します。他の人は凍ります(そうすべきではありません)。私はそれを十分に説明できることを願っています、ここに問題のある領域があります。

function enemy(clr, cx, cy) {
    this.color = clr;
    this.cordX = cx;
    this.cordY = cy;
    this.move = function() {
        color = this.color;
        cordX = this.cordX;
        cordY = this.cordY;
        setInterval(function() {
            var direction = Math.floor(Math.random() * 4);
            switch (direction) {
                case 0:
                    if (cordX + 20 <= 480) {
                        context.clearRect(cordX, cordY, 20, 20);
                        cordX = cordX + 20;
                        context.fillStyle = color;
                        context.fillRect(cordX, cordY, 20, 20);
                    }

                    break;
                case 1:
                    if (cordX - 20 >= 0) {
                        context.clearRect(cordX, cordY, 20, 20);
                        cordX = cordX - 20;
                        context.fillStyle = color;
                        context.fillRect(cordX, cordY, 20, 20);
                    }
                    break;
                case 2:
                    if (cordY + 20 <= 480) {
                        context.clearRect(cordX, cordY, 20, 20);
                        cordY = cordY + 20;
                        context.fillStyle = color;
                        context.fillRect(cordX, cordY, 20, 20);
                    }
                    break;
                case 3:
                    if (cordY - 20 >= 0) {
                        context.clearRect(cordX, cordY, 20, 20);
                        cordY = cordY - 20;
                        context.fillStyle = color;
                        context.fillRect(cordX, cordY, 20, 20);
                    }
                    break;
            }

        }, 100);
    }
}

と正方形の作成者:

var newEnemy = new enemy("rgb(" + Math.floor(Math.random() * 200) + "," + Math.floor(Math.random() * 200) + "," + Math.floor(Math.random() * 200) + ")", Math.floor(Math.random() * ((500 - 0) / 20)) * 20 + 0, Math.floor(Math.random() * ((500 - 0) / 20)) * 20 + 0);
newEnemy.move();
enemyNum = enemyNum + 1;
}, 10000);

ここで実際の動作を見ることができます

ダークアブソルではない

各正方形が追加されると、動きがますます不安定になることに注意してください。

関数var color, cordX, cordY内で忘れていました。this.moveつまり、これらの変数はグローバルになり、各正方形は、それ自体ではなく最後の正方形でのみ機能します。これが、1つの正方形だけが移動する理由です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javascriptでオブジェクトをキーとして使用するときの奇妙な動作

分類Dev

ベクトルの動きで奇妙な動作をするオブジェクト

分類Dev

PHP匿名オブジェクトの文字列を連結する奇妙な動作

分類Dev

javascript引数オブジェクトを変更しようとすると、なぜこれほど奇妙な動作をするのですか?

分類Dev

ラムダ式でオブジェクトを変更する際の奇妙な動作

分類Dev

JavaScriptオブジェクトの更新動作(奇妙な?)

分類Dev

Chromeオブジェクトconsole.logでの奇妙な動作

分類Dev

PHP DateTimeオブジェクトでの奇妙な(?)動作

分類Dev

オブジェクトでのSelect2の奇妙な動作

分類Dev

オブジェクトの「コンストラクタ」キーをチェックするための奇妙なJavaScriptの動作

分類Dev

関数オブジェクトを作成するときの奇妙なテンプレート文字列の動作

分類Dev

2つのオブジェクトをJUnitと比較すると奇妙な動作が見られる

分類Dev

Equalsメソッドがオブジェクトのコピーで奇妙な動作をしている

分類Dev

オブジェクトをスケーリングするときの非常に奇妙な動作

分類Dev

このオブジェクトをこの静的配列に追加する奇妙な動作

分類Dev

-COMオブジェクトから変数を設定するときのErrorActionの奇妙な動作

分類Dev

オブジェクトをスケーリングするときの奇妙な動作

分類Dev

Pythonでクラス属性として別のクラスオブジェクトのリストを使用するときの奇妙な動作

分類Dev

ループPythonでオブジェクトを作成する-不可解な動作

分類Dev

別のオブジェクトの変数からオブジェクトの変数を設定するときの奇妙なPythonの動作

分類Dev

Vueのオブジェクトの配列からオブジェクトを削除するときの奇妙な動作

分類Dev

ColdFusionでオブジェクトを作成する動作

分類Dev

オブジェクトが「最終的ではない」奇妙な動作

分類Dev

TensorFlowオブジェクト検出APIの奇妙な動作

分類Dev

オブジェクトとconsole.logの奇妙な動作

分類Dev

JS Date()オブジェクトからの奇妙な動作

分類Dev

奇妙なオブジェクト割り当て動作c ++

分類Dev

JS:奇妙なオブジェクト比較動作

分類Dev

hasOne関係のnullオブジェクトの奇妙な動作

Related 関連記事

  1. 1

    Javascriptでオブジェクトをキーとして使用するときの奇妙な動作

  2. 2

    ベクトルの動きで奇妙な動作をするオブジェクト

  3. 3

    PHP匿名オブジェクトの文字列を連結する奇妙な動作

  4. 4

    javascript引数オブジェクトを変更しようとすると、なぜこれほど奇妙な動作をするのですか?

  5. 5

    ラムダ式でオブジェクトを変更する際の奇妙な動作

  6. 6

    JavaScriptオブジェクトの更新動作(奇妙な?)

  7. 7

    Chromeオブジェクトconsole.logでの奇妙な動作

  8. 8

    PHP DateTimeオブジェクトでの奇妙な(?)動作

  9. 9

    オブジェクトでのSelect2の奇妙な動作

  10. 10

    オブジェクトの「コンストラクタ」キーをチェックするための奇妙なJavaScriptの動作

  11. 11

    関数オブジェクトを作成するときの奇妙なテンプレート文字列の動作

  12. 12

    2つのオブジェクトをJUnitと比較すると奇妙な動作が見られる

  13. 13

    Equalsメソッドがオブジェクトのコピーで奇妙な動作をしている

  14. 14

    オブジェクトをスケーリングするときの非常に奇妙な動作

  15. 15

    このオブジェクトをこの静的配列に追加する奇妙な動作

  16. 16

    -COMオブジェクトから変数を設定するときのErrorActionの奇妙な動作

  17. 17

    オブジェクトをスケーリングするときの奇妙な動作

  18. 18

    Pythonでクラス属性として別のクラスオブジェクトのリストを使用するときの奇妙な動作

  19. 19

    ループPythonでオブジェクトを作成する-不可解な動作

  20. 20

    別のオブジェクトの変数からオブジェクトの変数を設定するときの奇妙なPythonの動作

  21. 21

    Vueのオブジェクトの配列からオブジェクトを削除するときの奇妙な動作

  22. 22

    ColdFusionでオブジェクトを作成する動作

  23. 23

    オブジェクトが「最終的ではない」奇妙な動作

  24. 24

    TensorFlowオブジェクト検出APIの奇妙な動作

  25. 25

    オブジェクトとconsole.logの奇妙な動作

  26. 26

    JS Date()オブジェクトからの奇妙な動作

  27. 27

    奇妙なオブジェクト割り当て動作c ++

  28. 28

    JS:奇妙なオブジェクト比較動作

  29. 29

    hasOne関係のnullオブジェクトの奇妙な動作

ホットタグ

アーカイブ