2011-09-13 5 views
4

私は、myBitmapDataという名前のBitmapDataオブジェクトを持っています。サイズ104x104のPNGがロードされました。このPNGは透明な背景の赤い円を表します。 myBackgroundという名前のSpriteオブジェクトもあります。その赤い円をmyBackgroundにレンダリングします。Actionscript 3.0 drawRectは変わった

myBackground.graphics.beginBitmapFill(myBitmapData); 
myBackground.graphics.drawRect(0, 0, myBitmapData.width, myBitmapData.height); 
myBackground.graphics.endFill(); 
addChild(myBackground); 

すべては問題ありません。 myBackgroundの左上に赤い円が表示されます。

しかし、私は

myBackground.graphics.drawRect(0, 52, myBitmapData.width, myBitmapData.height); 

に三行目を変更し、私のサークルが52ピクセル下に翻訳されることを期待するとき、私は実際に(:)私にとっては)奇妙な何かを得る:2つの赤い半円があります(彼らは砂時計のような形をしています)。

質問:myBackgroundのランダムな位置にmyBitmapDataをレンダリングするにはどうすればよいですか?

P.S. は

myBackground.graphics.drawRect(0, 104, myBitmapData.width, myBitmapData.height); 

の場合には、再び円です:)

答えて

4

これはbeginBitmapFillのデフォルトrepeat = trueパラメータによって引き起こされます。ドキュメントには例があります。繰り返しを無効にすることはできませんが、半円を取得するだけです。

この問題を解決するには、いくつかの方法があります。

  • beginBitmapFillで引数として翻訳(変位)とMatrixを使用してください。
  • 別のスプライトの0,0に四角形を描画し、そのスプライトを背景に移動する場所に移動します。
  • 背景に直接描画するのではなく、copyPixelsを使用して別のビットマップに描画します。その後、そのビットマップで背景を記入します。
関連する問題