PDA

Просмотр полной версии : истинный размер Image


Сашаc
21.02.2010, 22:56
В ран-тайме загружаю рисунки с сервера через Image следующим кодом:


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 (не совсем универсально, но для моего случая достаточно).

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


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;
}
}
}
}
}