PDA

Просмотр полной версии : Bitmap отображается раньше чем выполнится ресайз


metsys
06.04.2011, 20:06
Собственно столкнулся с такой вещью. Загружаю картинку - проверяю её размеры изображения больше чем мне это надо - ресайжу их, после чего отправляю на отображение. Но картинка отправляется раньше чем ресайзится

if(imageHeight>_rightImageHeight || imageWidth>MENU_ITEM_DEPTH)
{
if(imageHeight>imageWidth)
{
bm.height=(imageHeight/(imageHeight/_rightImageHeight));
bm.width=(imageWidth/(imageHeight/_rightImageHeight));
}
else
{
bm.height=(imageHeight/(imageWidth/MENU_ITEM_DEPTH));
bm.width=(imageWidth/(imageWidth/MENU_ITEM_DEPTH));
}
}

addChild(bm);

DZHETIGAPA
06.04.2011, 20:14
А ты не подумал, что твои условия вообще могут не выполняться? Потрейси. А после отображения картинка сразу ресайзится что ли?

И вообще. Тут проще scaleX scaleY использовать... а ты ух нагородил:))

metsys
06.04.2011, 20:18
трейсил, условия выполняются, но первым делом добавляется битмапа, а потом уже работают условия, про scale'ы забыл, но в принципе ничего плохого в том как это делаю я не вижу, хотя могу и ошибатся.

DZHETIGAPA
06.04.2011, 20:21
предположу, что ты добавил битмэп выше, а последним addChild ты просто передобавил битмэп на сцену. Ты бы побольше кода дал, а то так сложно судить

metsys
06.04.2011, 20:23
ну секретов никаких нету, я загружаю картинку, когда срабатывает событие для загрузки картинки Event.COMPLETE я смотрю какие размеры. если не подходят ресайжу, если подходят добавляю.

private function rightImageLoaded(e:Event):void
{
e.target.removeEventListener(Event.COMPLETE, rightImageLoaded);

var bm:Bitmap=e.target.content;
var imageHeight:int=bm.height;
var imageWidth:int=bm.width;


//--проверяем - если загруженная картинка больше допустимого размера, тогда пропорционально уменьшаем её
if(imageHeight>_rightImageHeight || imageWidth>MENU_ITEM_DEPTH)
{
if(imageHeight>imageWidth)
{
bm.height=(imageHeight/(imageHeight/_rightImageHeight));
bm.width=(imageWidth/(imageHeight/_rightImageHeight));
}
else
{
bm.height=(imageHeight/(imageWidth/MENU_ITEM_DEPTH));
bm.width=(imageWidth/(imageWidth/MENU_ITEM_DEPTH));
}
}

addChild(bm);
}

DZHETIGAPA
06.04.2011, 20:29
Так после добавление исходной картинки на сцену сразу же картинка ресайзится и становится нужного размера. Так у тебя на данный момент происходит?

ты случайно такое не сделал еще выше

loader.load(new URLRequest())
addChild(loader)