PDA

Просмотр полной версии : Загрузка картинок и определение их размера


BOEHPYK
18.08.2006, 15:21
Задача, в принципе тривиальная, но возникла странная проблема.
Вот, к примеру, код с сайта Макромедии:


var loadListener:Object = new Object();

loadListener.onLoadInit = function(target_mc:MovieClip):Void {
trace(">> loadListener.onLoadInit()");
trace(">> =============================");
trace(">> target_mc._width: " + target_mc._width); // 315
_root.imageWidth = target_mc._width; //вот тут хочу выдернуть значение ширины
}

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);

var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mcLoader.loadClip("http://www.w3.org/Icons/w3c_main.png", mc);

trace(_root.imageWidth); // выдает undefined


По событию onLoadInit прекрасно определяется ширина картинки. Но я никак не могу выдернуть значение ширины в некую глобальную переменную, доступную из любого места в дальнейшем коде. Она доступна либо внутри события onLoadInit, либо, если я вешаю туда функцию - внутри это функции.
Попытки присвоить внутри этой функции значение ширины некой глобальной переменной ни к чему не приводят, поскольку код выполняется не дожидаясь загрузки картинки.
Может быть, кто-то сталкивался с подобной проблемой?
Заранее благодарен за ответ.

Sneg
18.08.2006, 15:51
import mx.utils.Delegate;

var loadListener:Object = new Object();
var width_object:Object = new Object();
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);

loadListener.onLoadInit = Delegate.create(this,onLoadInit);

function onLoadInit(target_mc:MovieClip):Void {
width_object.imageWidth=target_mc._width;
showWidthObject();
};

function showWidthObject():Void {
trace(width_object.imageWidth);
};

var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mcLoader.loadClip("http://www.w3.org/Icons/w3c_main.png", mc);