2017-10-23 9 views
0

ここでは、オブジェクト開発者初心者です。私はここで説明するように、落下キューブのアニメーションをしようとします:Falling animation to fill a webpageオブジェクトのリストにメソッドを追加します。

私はいくつかのアルゴリズムの問​​題があります。私はテトリスゲームのモデルに従っているが、同時に複数のピクセルが落ちるようにする。だから私はピクセルを移動するいくつかのメソッドを持つコンストラクタを持っています。

しかし、今、私は次のようにオブジェクトの配列を作成するために私のコンストラクタを使用します。

var a_player = []; 

function addPlayer(pos){ 
    var player = new Player(pos); 
    a_player.push(player); 
} 

addPlayer({x: 3, y: 3}); 
addPlayer({x: 0, y: 0}); 

そして、私が衝突()メソッドのようないくつかのパブリックメソッドを使用します:

function collide(arena, player) { 
    const [m, o] = [player.matrix, player.pos]; 
    for (let y = 0; y < m.length; ++y) { 
    for (let x = 0; x < m[y].length; ++x) { 
     if (m[y][x] !== 00 && 
      (arena[y + o.y] && 
      arena[y + o.y][x + o.x]) !== 0) { 
      return true; 
      } 
    } 
    } 
    return false; 
} 

しかし、私ドンそれを行う最善の方法が何であるかを知っているわけではありません。私は

for (i = 0; i < a_player.length; i++){ 
      console.log(a_player[i].pos); 
} 

のような「のために」を使用することができますが、私はすべての方法でそれを適用する必要があり、または私は私の配列で、私が持っているプレイヤーの数だけ、私の方法を複製することができます(ただし、両端に、私はもっと欲しいです20kプレイヤーよりも...)。あなたはそのような問題に私を助けることができますか?

+0

20kの選手...?このNode.jsなのかな? –

+0

あなたは 'Array.prototype.forEach'を使うことができます:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach – Kontsnor

+0

キャンバスだけを使うのは悪い考えですか? JSはそのことをやりますか? – SandaleRaclette

答えて

0

私はあなたが探しているこの何を考える:

function collide(arena) { 
    const [m, o] = [this.matrix, this.pos]; 
    for (let y = 0; y < m.length; ++y) { 
    for (let x = 0; x < m[y].length; ++x) { 
     if (m[y][x] !== 00 && 
      (arena[y + o.y] && 
      arena[y + o.y][x + o.x]) !== 0) { 
      return true; 
      } 
    } 
    } 
    return false; 
} 
Player.prototype.collide=collide; 

for (i = 0; i < a_player.length; i++){ 
      a_player[i].collide(arena) 
} 
+0

ありがとうございました。実際には、私は実際には何のエラーも残っていませんが、私のアニメーションは動作しません...私のポストを更新したり、新しいものを作成するのが最善かどうかわかりません。 – SandaleRaclette

+0

私はアニメーションの側面について具体的に話す新しいものを開くべきだと思います。 –

関連する問題