Можно ли изменить размер SpriteAsset, не добавляя его в список отображения? - PullRequest
3 голосов
/ 31 марта 2010

У меня есть актив встроенного изображения (с сеткой scale9), и я пытаюсь получить растровые данные при изменении его размера, но я не могу этого сделать, не добавив их в список отображения.

Я пытаюсь это:

spriteAsset.setActualSize(w,h);
spriteAsset.width = w;
bmd.draw(spriteAsset);

Но когда я затем вытягиваю растровые данные с graphics.beginBitmapFill (), я просто получаю исходное растянутое изображение.

Есть указатели? Или мне нужно взять 9 отдельных растровых изображений и сделать 9 отдельных растровых заливок?

Ура, -Josh

Ответы [ 2 ]

2 голосов
/ 01 апреля 2010

Мой опыт создания моментальных снимков BitmapData.draw () активов scale9 показал, что scale9 отбрасывается, даже если актив был добавлен в список отображения. Насколько я понимаю, это ошибка, я не знаю, сообщалось ли об этом.

Помимо разочарования scale9, не забывайте, что BitmapData.draw может принимать матричный параметр. По умолчанию он равен нулю, что означает единичную матрицу (без масштаба, поворота и т. Д.). Чтобы сделать снимок преобразованного актива, необходимо предоставить его матрицу преобразования ...

bmd.draw(spriteAsset, spriteAsset.transform.matrix)

(еще раз не проверил это, извините, так что ммм.)

0 голосов
/ 31 марта 2010

Решение Danjp хорошо, но если вы хотите изменить размер самих растровых данных, попробуйте использовать масштабную матрицу, например:

var scaledBitmapData:BitmapData = new BitmapData(newWidth, newHeight);
var scaleMatrix:Matrix = new Matrix();
scaleMatrix.scale(scaleFactor, scaleFactor);

scaledBitmapData.draw(bitmap, scaleMatrix);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...