Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.02.2010, 22:56
Сашаc вне форума Посмотреть профиль Отправить личное сообщение для Сашаc Найти все сообщения от Сашаc
  № 1  
Ответить с цитированием
Сашаc

Регистрация: Feb 2008
Сообщений: 10
По умолчанию истинный размер Image

В ран-тайме загружаю рисунки с сервера через Image следующим кодом:

Код AS3:
var img:Image = new Image();
img.load(someFileName);
img.visible = true;
img.x = someX;
img.y = someY;
parentCanvas.addChild(img);
Всё хорошо, но что бы картинка показалась, ей надо задать размер (иначе она 0х0 и её не видно). И вот здесь грабли - как узнать истинные размеры картинки?

если для img.width и img.height ничего не присваивать, то они равны 0 и картинки не видно...
Поставить просто большие значения не могу, т.к. на этих img висят потом обработчики нажатия мыши и надо точный размер выставить.

Добавлено через 42 часа 2 минуты
Нашёл решение. По событию о завершении загрузки Complete в параметре как раз истинный размер картинки. Единственный нюанс, это что в это параметре вроде как нет ссылки на сам объект Image. Для этого сделал поиск по source (не совсем универсально, но для моего случая достаточно).

Короче, код такой:

Код AS3:
var img:Image = new Image();
img.load(someFileName);
img.visible = true;
img.x = someX;
img.y = someY;
img.addEventListener(Event.COMPLETE, doImageComplete);//set actual size
parentCanvas.addChild(img);
 
private function doImageComplete(e:Event):void{
 for (var i:int = 0;i<parentControl.numChildren;i++)
 {
   var d1:Object = parentControl.getChildAt(i);
 
   if (d1 != null)
   {
      if (d1 is Image)
      {
	var img:Image = d1 as Image;
 
	if(img.source == (e.currentTarget as Image).source)
	{
 	   img.width = (e.currentTarget as Image).contentWidth;
	   img.height = (e.currentTarget as Image).contentHeight;
	   return; 
	}
      }
    }
  }
}


Последний раз редактировалось Сашаc; 23.02.2010 в 16:59.
Создать новую тему Ответ Часовой пояс GMT +4, время: 04:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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