Actionscript 3.0 drawRect很奇怪

时间:2011-09-13 12:09:00

标签: actionscript-3 drawrect

我有一个名为myBitmapData的BitmapData对象。它装载了尺寸为104x104的PNG。此PNG表示透明背景上的红色圆圈。 还有一个名为myBackground的Sprite对象。我希望将红色圆圈渲染到myBackground中。

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个像素,我实际上获得了一些奇怪的东西(对我而言:)):有两个红色的半圆圈(它们形成像沙漏)。

所以,问题是:如何将myBitmapData渲染到myBackground的随机位置?

P.S。 在

的情况下
myBackground.graphics.drawRect(0, 104, myBitmapData.width, myBitmapData.height);

它再次成为圆圈:)

1 个答案:

答案 0 :(得分:4)

这是由beginBitmapFill的默认repeat = true参数引起的。文档中有一个例子。禁用重复将无效,你只需要半圈。

有几种方法可以解决这个问题:

  • beginBitmapFill
  • 中使用Matrix作为参数进行翻译(置换)
  • 在另一个Sprite上的0,0处绘制矩形,然后将该精灵移动到背景所需的位置。
  • 不要直接绘制背景,而是使用copyPixels绘制到另一个位图。然后用该位图填充背景。