Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Bitmap отображается раньше чем выполнится ресайз (http://www.flasher.ru/forum/showthread.php?t=153641)

metsys 06.04.2011 20:06

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

Код AS3:

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 я смотрю какие размеры. если не подходят ресайжу, если подходят добавляю.

Код AS3:

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

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

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

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



Часовой пояс GMT +4, время: 15:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.