1

私は AS3 に非常に慣れていないため、毎日いくつかのガイドを読んでいますが、まだ基本的な構文をすべて知っているわけではありません。この bitmapdata キャンバスを使用してスプライトシートをキャンバスにロードし、foor ループを使用して、マップにタイルを設定しようとしましたが、うまくいきませんでした。

        for (var i:int = 0; i < columns; i++)
        {
            for (var j:int = 0; j < rows; j++)
            {
                smb3SpriteSheet = new SMB3(new SMB3SpriteSheet(), smb3XML.animation, 175);
                smb3SpriteSheet.x = startX;
                smb3SpriteSheet.y = startY;
                canvas.addSprite(smb3SpriteSheet);
                startX = startX + 16
            }
            startX = 0
            startY = startY + 16
        }

このコードは、空白の背景ビットマップに追加する新しいビットマップ データを作成し、x 座標と y 座標を設定してから、スペースを下に移動して繰り返すことになっていますが、コンパイルすると、表示されるタイルは最後のタイルだけです。 . 私はオンラインで調べましたが、この方法でビットマップ データを使用することについて見つけることができる情報はありません。課題に使用することになっています。

4

1 に答える 1

1

SMB3 クラスが何をすべきかはわかりませんが、同じキャンバスを描画しようとするたびに呼び出すスプライト シートを反復するためだけに、最後の画像を受け取っていると思います。そのため、キャンバスを呼び出すたびに、新しい SMB3 を作成している場合でも、実際には現在のコンテンツを新しいコンテンツに置き換えています。表示オブジェクトが複数の親を持つことはできないことを考慮する必要があります。

Spriteしたがって、コードを機能させるには、画像ごとに個別の を使用しますが、これは絶対にお勧めできません。または、 を使用しBitmapDataてキャンバスの画像描画を実行し、その後に をBitmapスプライトに割り当てます。

この操作にはいくつかの方法があります。、またはメソッドを使用できますBitmapDatacopyPixelsdrawclone

問題に関連する 2 つのリソースを次に示します。

スプライトの複数のインスタンスを追加しますか?

スプライトの別のインスタンスを表示する

于 2012-10-30T19:45:49.890 に答える