Actionscript 3.0 drawRect работает странно - PullRequest
4 голосов
/ 13 сентября 2011

У меня есть объект BitmapData с именем myBitmapData.Был загружен PNG размером 104х104.Этот PNG представляет красный круг на прозрачном фоне.Существует также объект Sprite с именем myBackground.Я хочу сделать этот красный круг в 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?

PS В случае

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

это снова круг:)

1 Ответ

4 голосов
/ 13 сентября 2011

Это вызвано параметром beginBitmapFill по умолчанию repeat = true.В документации есть пример.Отключение повторения не сработает, тогда вы просто получите полукруг.

Есть несколько способов исправить это:

  • Использовать Матрицу с переводом (смещением) в качестве аргумента в beginBitmapFill.
  • Нарисуйте прямоугольник в 0,0 на другом спрайте и переместите этот спрайт туда, где вы хотите, на фоне.
  • Не рисуйте непосредственно на фоне, а на другом растровом изображении, используя copyPixels .Затем заполните фон этим растровым изображением.
...