Форум 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=121184)

Sajaxt 09.02.2009 21:02

Не получается получить ширину картинки...
 
Доброе время суток!

Вообщем вопрос таков:
Имеется некий загрузчик, с помощью которого загружается картинка во флэш, когда пытаюсь обратится к ширене данной картинки, выдаёт 0.
Почему или как мне узнать ширину в пикселах?

Вот собственно код:

Код AS3:

...
                        var pic_loader:Loader = new Loader();
                        var pic_url_req:URLRequest = new URLRequest(pic_rote);
                        pic_loader.load(pic_url_req);
                        addChild(pic_loader);
                        trace(pic_loader.width);
...

Зарание благодарен!

Psycho Tiger 09.02.2009 21:19

Ну конечно, пока он загрузит картинку - пройдет некоторое время, пусть даже картинка на локальном носителе - она загрузиться не мгновенно. (не верите - в блоге у __etc самая 1 запись).
Подписывайтесь у Event.COMPLETE, после чего смотрите.

Sajaxt 09.02.2009 21:20

дык так и делаю!

_Smirnoff 09.02.2009 21:21

Нельзя померить ширину/высоту, того чего еще не видно.

Sajaxt 09.02.2009 21:28

дык я ведь меряю после команды AddChild();

musat 09.02.2009 21:35

Можно мерять и без addChild(), ведь свойство width у DisplayObject'ов есть всегда. Главное - дождаться окончания загрузки картинки (о чем и говорил Psycho Tiger)
Код AS3:

function loadPic():void {
        ...
        pic_loader.load(pic_url_req);
        pic_loader.addEventListener(Event.COMPLETE, loadPicHandler);
}
 
function loadPicHandler(e:Event):void {
        trace(pic_loader.width);
}


Sajaxt 09.02.2009 21:38

Код AS3:

package{
        import flash.display.*;
        import flash.net.*;
        import flash.xml.*;
        import flash.events.*;
 
        public class Galery extends Sprite{
 
                private var gal_XML:XML = new XML();                  // Определяем новый xml
                private var xml_rote:String = "gall.xml";  // А таакже путь к нему
                private var url_request:URLRequest = new URLRequest(xml_rote)// Запрос!!
                private var xml_loader:URLLoader = new URLLoader(url_request); // Загрузчик файла
                private var crnt_pic:Number = 0;    //Номер текущей картинки
                private var pic_cnt:Number = 0;                //Количество картинок               
        //-------------------------------------------------------------------
                public function Galery():void{
                        xml_loader.addEventListener("complete",xml_loaded);
                        gal_XML.ignoreWhitespace=true;
                }
        //-------------------------------------------------------------------
                private function xml_loaded(e:Event):void{
                        gal_XML= XML(xml_loader.data);
                        pic_cnt = gal_XML.item.length();
 
                        trace(gal_XML.item[crnt_pic].cmt);
 
                        load_pic(gal_XML.item[crnt_pic].img);
 
                        xml_loader.removeEventListener("complete",xml_loaded);
                }
        //-------------------------------------------------------------------
                private function load_pic(pic_rote:String):void{
                        var pic_loader:Loader = new Loader();
                        var pic_url_req:URLRequest = new URLRequest(pic_rote);
                        pic_loader.load(pic_url_req);
                        addChild(pic_loader);
                        trace(pic_loader.width);
                        pic_loader.scaleX=0.1;
                        pic_loader.scaleY=0.1;
                }
}


ZlobaZl 09.02.2009 21:38

musat через функцию loadPicHandler(e:Event) делает. Попробуй её с помощью листера на событие мышки показать ширину. Когда её точно увидишь на экране кликай)

Добавлено через 3 минуты
А попробуй поменять addChild(pic_loader);
с Trace
Так:
trace(pic_loader.width);
addChild(pic_loader);

Sajaxt 09.02.2009 21:44

попробывал-бестолку :(

ZlobaZl 09.02.2009 21:49

Самый прикол что выдает 0 а не NaN или Undefined


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

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