У меня есть спрайт, который является примитивным прямоугольником, повернутым на 45 градусов. Я хотел бы создать Bitmap
, используя BitmapData
, который скопирует его точно. Я думал, что BitmapData#draw
будет работать только на моем спрайта, поэтому я попытался наивный подход:Рисование спрайта на bitmapData без заполнения
var a = new Sprite();
a.graphics.beginFill(0xFF0000);
a.graphics.drawRect(0, 0, 200, 100);
a.graphics.endFill();
a.x = 100;
a.y = 100;
a.rotation = 45;
addChild(a);
var bitmapData = new openfl.display.BitmapData(1500, 1500, false, 0x00000000);
bitmapData.draw(a);
var bitmap = new openfl.display.Bitmap(bitmapData);
bitmap.x = 500;
bitmap.y = 100;
addChild(bitmap);
Однако результат меня удивил:
кажется она сохраняет матрицу преобразования (которая на самом деле имеет смысл, в противном случае ротация будет потеряна). Так что я попытался более надежный подход:
var bitmapData = new openfl.display.BitmapData(1500, 1500, false, 0x00000000);
var rect = a.getBounds(a.parent);
var matrix = a.transform.concatenatedMatrix;
matrix.translate(-rect.left, -rect.top);
bitmapData.draw(a, matrix);
Желаемый результат
И еще, такой же результат, как на изображении при условии. Я пробовал я забыл о clipRect
param, но еще более странно, независимо от того, насколько большой прямоугольник, объект вообще не копируется (осталось только черное пространство).x
и y
, клип не является проблемой
var bitmapData = new openfl.display.BitmapData(1500, 1500, false, 0x00000000);
var clip = new openfl.geom.Rectangle(1500, 1500);
bitmapData.draw(a, clip);
ли я злоупотребляя BitmapData#draw
? Любая помощь приветствуется
(Должно быть BitmapData, как я должен использовать его в пиксельной идеальный тестирования столкновения с использованием BitmapData#hitTest
)
OpenFL 4.0.0
Испытано с CPP, Неко и HTML5
Спасибо вы.
Я не уверен, каков ваш вопрос, потому что я не уверен, каков ваш желаемый результат. – null
Добавлено изображение с желаемым результатом. Однако я думаю, что код прав, но может быть [ошибка в OpenFL 4] (https://github.com/openfl/openfl/issues/1214) – Misiur