Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   сбивается центровка изображения (http://www.flasher.ru/forum/showthread.php?t=183526)

r0m1n 24.08.2012 11:40

сбивается центровка изображения
 
загружаю изображение с удаленного сервера :
Код AS3:

var urlReq: URLRequest = new URLRequest("http://88.212.***.**/homeAlone/vk/diary/diary3.jpg");
                        diaryLoader = new Loader();
                        diaryLoader.load(urlReq);
                        diary = diaryLoader.content;
                        diaryLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDiaryLoaded);
 
 
        private function onDiaryLoaded(e:Event):void
                {
                        setSize(e.target.content.width, e.target.content.height);
                        addChildAt(e.target.content,0);
 
                }

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

Krusty 24.08.2012 12:34

Потому что вы выставляете ее по центру по событию Event.COMPLETE, т.е. по факту полной загрузки.
А повторно оно грузится из кэша, т.е. Event.COMPLETE происходит почти сразу, поэтому и выравнивание срабатывает сразу.

r0m1n 24.08.2012 12:54

нужно заранее координаты лоадера выставить?
Код AS3:

diaryLoader.x=0;
diaryLoader.y=0;

так?

zuxul 24.08.2012 13:00

Потому что, в начале, изображение не загружено, и следовательно, высота и ширина не известна (и контейнер - Loader имеет высоту и ширину 0)
Хотя, это я туплю, у Вас же в комплите, значить косяк в чем-то другом

caseyryan 24.08.2012 13:00

Krusty, вы о чем? Я лично здесь никакой разницы не вижу. У него изображение всегда добавляется по факту полной загрузки. Что с сервера, что из кэша.
Если речь о diary = diaryLoader.content;, то в этом коде я не вижу где это используется. Добавляется-то e.target.content
Цитата:

нужно заранее координаты лоадера выставить?
diaryLoader.x=0;
diaryLoader.y=0;
так?
нет, хотя это тоже вариант.
Но у вас скорее всего проблема в присвоении ширины и высоты изображению.
Слишком мало информации, чтобы сказать точнее

Krusty 24.08.2012 13:15

А, ну да, не заметил когда делается добавление.

r0m1n 24.08.2012 13:19

Цитата:

Сообщение от caseyryan (Сообщение 1093598)
Krusty, вы о чем? Я лично здесь никакой разницы не вижу. У него изображение всегда добавляется по факту полной загрузки. Что с сервера, что из кэша.
Если речь о diary = diaryLoader.content;, то в этом коде я не вижу где это используется. Добавляется-то e.target.content

нет, хотя это тоже вариант.
Но у вас скорее всего проблема в присвоении ширины и высоты изображению.
Слишком мало информации, чтобы сказать точнее

заранее указать ширину и высоту loader'у ? указание координат для него не помогает. кстати если картинку гружу с локалхоста - сразу нормально встает по центру. такое ощущение что действительно проблема в задержке какой-то. только я же вроде после того как она загружена добавляю...

Добавлено через 12 минут
тоже не помогло

caseyryan 24.08.2012 13:35

Забудьте про loader, изменяйте координаты загруженного им контента.
Код AS3:

private function onDiaryLoaded(e:Event):void
{
        setSize(e.target.content.width, e.target.content.height); // проблема, скорее всего, в этом методе
        addChildAt(e.target.content,0);
}

что если сделать так:

Код AS3:

private function onDiaryLoaded(e:Event):void
{
        var img:Bitmap = e.target.content as Bitmap;
          img.x = 50;
          img.y = 50;
        addChildAt(img, 0);
}

?

r0m1n 24.08.2012 13:46

картинку чё-то режет... но вроде как сразу куда нужно сдвигает. вручную размер прописать?

caseyryan 24.08.2012 14:21

Здесь никакой код не режет картинку. Это делает какой-то другой код. Так что смотрите что там у вас еще в приложении


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

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