0

現在、作成中のゲームのタイリング効果を作成しようとしています。私はタイルシートを使用しており、そのようにタイルをスプライトにロードしています...

this.graphics.beginBitmapFill(tileImage);
this.graphics.drawRect(30, 0,tWidth ,tHeight );

var tileImage は bitMapData です。30 は、リタングルを移動するピクセル数です。tWidth と tHeight は四角形の大きさです。これは 30x30 です

これは、タイル上でロールするときにビットマップを変更するために行うことです

this.graphics.clear();
this.graphics.beginBitmapFill(tileImage);
this.graphics.drawRect(60, 0,tWidth ,tHeight );

スプライトキャンバスをクリアします。次に、 tileImage の別の位置に書き直します。

私の問題は....

古いタイルは完全に削除されますが、新しいタイルは古いビットマップが表示された場所よりも右側に配置されます。

私のタイル シートは幅 90 ピクセル、高さ 30 ピクセルしかありません。その上、新しいタイルが古いタイルの後ろに描かれているように見えます。これを完璧にするより良い方法はありますか?

繰り返しますが、ビットマップの色を変更するだけです

4

1 に答える 1

1

スプライトにタイルシート全体をロードして、scrollRect必要なたびにプロパティを再定義することができます。

this.scrollRect = new Rectangle( 30, 0, tWidth ,tHeight );

scrollRect.x、、、または;だけ.yを編集することはできないことに注意してください。毎回新しい長方形を再定義する必要があります。.width.height

scrollRectを使用すると、ビットマップの一部を再描画するよりもはるかに高速になる可能性があります。

に関する詳細については、GrantSkinnerのこの優れた記事を読むことができますscrollRect

于 2010-01-28T18:37:02.670 に答える