2009-10-19 2 views
0

Я загрузил JPG с размерами 3264x2448 в Sprite. Как я могу изменить его проприету, чтобы meto нарисовал Sprite в объекте BitmapData (который в CS3/Flash Player 9 ограничен 2880 высотой или шириной). Моя цель - использовать Soulwire [DisplayUtils] [1] для создания миниатюры. Вот код, который отлично работает с другими, меньшими, спрайтами:AS3/FP9 - Изменить размер спрайта

var bmpd:BitmapData = new BitmapData(jpgSprite.width, jpgSprite.height, true, 0x00FFFFFF); 
bmpd.draw(jpgSprite); 

var thumb:Bitmap = DisplayUtils.createThumb(bmpd, 100, 100, Alignment.MIDDLE, true); 
addChild(thumb); 

спасибо за ваши предложения.

ответ

2

Думаю, использование матрицы для ее масштабирования может сделать трюк. Однако я не тестировал код.

var w:Number = 3264; 
var h:Number = 2448; 
var scale:Number = w/2880; 
var bmpd:BitmapData = new BitmapData(2880, h/scale, true, 0x00FFFFFF); 
var matrix:Matrix = new Matrix(); 
matrix.createBox(scale, scale) 
bmpd.draw(jpgSprite, matrix); 
+0

Работал как очарование, спасибо! Вот моя обобщенная версия: \t var w: Number = jpgSprite.width; \t var h: Number = jpgSprite.height; \t var scale: Number = 1; \t if (h> 2880 || w> 2880) { \t \t шкала = (h> w)? h/2880: w/2880; \t} \t var bmpd: BitmapData = new BitmapData (w/scale, h/scale, true, 0x00FFFFFF); \t var xform: Matrix = new Matrix(); \t xform.createBox (шкала, масштаб); \t bmpd.draw (jpgSprite, xform); –

Смежные вопросы