Actionscript 3.0 drawRect работает странно

У меня есть объект BitmapData с именем myBitmapData. Он был загружен в формате PNG размером 104x104. Этот 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?

P.S. В случае

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

опять круг :)


person Nick    schedule 13.09.2011    source источник


Ответы (1)


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

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

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