2

私の... うーん... Z インデックス (悪いしゃれ、すぐに理由がわかります) が間違った順序になっていることを確認するために誰かが私を助けることができるかどうか疑問に思っています。私はこれを数時間続けてやっていますが、私の目はバグっています - しかし - スタックに一晩質問を残しておくと、これを正しい方向に進めるのに役立つかもしれません.

私はhttps://github.com/AlexChesser/jsSpriteのコードに取り組んでおり、6 回目のテストまで進んでいます。W キーを使用して実行し、A と D を使用して左右に回転します: http://chesser.ca/jsSprite/06-brainnsss....php (Gettit? Z-Index?! 陽気です)。

とにかく、ちょっと画面を走り回ってみればわかると思います。個々のゾンビの白い四角/汚れた四角形は、他のゾンビの四角と重なっています。複数のスプライトが重なっている場合、他のスプライトを乱すことなくすべてのスプライトが描画されるようにするにはどうすればよいでしょうか?

(z はゾンビ用ですが、z インデックスは、CSS でオーバーラップを処理する場合のようです。おそらく、何時間もコーディングを続けていると、もっと面白くなります)。

あなたのBrainsssをありがとう......

4

2 に答える 2

1

これは z-index の問題ではなく、ゾンビ自体は問題ありません。

あなたの問題は、実際には2行目にありますdrawFrame

drawFrame: function(){
  Sprite.ctx.clearRect(0,0,Sprite.width,Sprite.height); //clear previous frame
  // I am trouble:
  MainContext.clearRect(Sprite.Xpos, Sprite.Ypos, Sprite.width, Sprite.height);

ゾンビを描画するたびに、ゾンビがかつて存在していたメイン キャンバスの長方形がクリアされ、近くのオブジェクトに影響を与える可能性があります。

代わりに、毎回キャンバス全体をクリアする必要があります。

の MainContext.clearRect をコメントアウトしてdrawFrame、代わりに以下のように追加してみてくださいrunloop。それはあなたの問題を解決するはずです。

runloop = function(m) {
  // New clear put here!
  MainContext.clearRect(0,0,canvas.width,canvas.height);
  m.drawFrame();
  for (Z in Zarr) {  // For ZOMBIE in "Zombie Array" Aaaaarrrgghhh... 
    Zarr[Z].pointTo(m);
    Zarr[Z].drawFrame();

    MainContext.drawImage(Zarr[Z].canvas, Zarr[Z].Xpos, Zarr[Z].Ypos);
  };
  MainContext.drawImage(m.canvas, m.Xpos, m.Ypos);
};
于 2011-04-19T12:23:39.113 に答える
1

レンダリングする前に、各ゾンビZarrの y 座標で配列 ( ) を並べ替えてみませんか? Yposそれとも、透明性 (の欠如) の問題に取り組んでいますか?

于 2011-04-19T04:03:46.947 に答える