PDA

Просмотр полной версии : уменьшение загружаемого клипа


ellis
22.05.2007, 14:26
Есть флешка, в которую динамически грузится клип. Высота и ширина загружаемого клипа больше, чем размер флешки. Нужно уменьшить клип пропорционально до размеров флешки.

Есть такой код, но клип не уменьшается. Подскажите, в чем ошибка?

loadMovie(muv, target_mc);

trace(target_mc._width);
xx = Math.round((Stage.width * 100) / target_mc._width);
yy = Math.round((Stage.height * 100) / target_mc._height);
trace(xx+','+yy+','+target_mc._width);
target_mc._xscale = target_mc.xx;
target_mc._yscale = target_mc.yy;

Kikasso
22.05.2007, 15:05
MovieClipLoader вам поможет.

ellis
22.05.2007, 16:49
Изменила загрузку клипа.
var clip_mcl:MovieClipLoader = new MovieClipLoader();
clip_mcl.loadClip(muv, target_mc);

xx = Math.round((Stage.width * 100) / target_mc._width);
yy = Math.round((Stage.height * 100) / target_mc._height);
trace(xx+','+yy);
target_mc._xscale = xx;
target_mc._yscale = yy;

Проблема в том, что клип не уменьшается. Если в вместо хх и уу прописать конкретные значения, то xscale и yscale срабатывают. Если же оставить переменные - не работает.

Kikasso
22.05.2007, 17:05
Неправильно. Сперва клип грузим, потом с ним работаем. Для этого и нуже MovieClipLoader и его неповторимое onLoadInit.

ellis
22.05.2007, 17:40
Вот так?

var clip_mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {
trace(target_mc._width+','+target_mc._height);
xx = Math.round((Stage.width * 100) / target_mc._width);
yy = Math.round((Stage.height * 100) / target_mc._height);
trace(xx+','+yy);
target_mc._xscale = xx;
target_mc._yscale = yy;
};

clip_mc1.addListener(mclListener);
clip_mcl.loadClip(muv, target_mc);

Kikasso
22.05.2007, 17:51
Очень похоже. Если работает, то так.
Хотя погодите, вы хотите его на всю сцену? После загрузки доступны и ширина и высота, можно просто

mclListener.onLoadInit = function(target_mc:MovieClip) {
target_mc._heigth = Stage.height;
target_mc._width = Stage.width;
}

А до загрузки непонятно, что такое ширина клипа который еще не загружен. А вы на это пытались разделить.

ellis
22.05.2007, 17:56
С onLoadInit не работает. Вообще не выполняется этот кусок кода.

Molecula
22.05.2007, 17:58
onLoadComplete
попробуйте


fmc = createEmptyMovieClip("footer_cell", this.getNextHighestDepth())
fmcl = new MovieClipLoader();
fmcl.onLoadComplete = function(fmc){
doSomeThing()
}
fmcl.addListener(fmcl);
fmcl.loadClip("images/footer/"+_img,fmc);
}

ellis
22.05.2007, 18:00
с onLoadComplete - тоже не работает.
Клип загружается, но с ним ничего не происходит. Даже trace не выводится.

Molecula
22.05.2007, 18:05
Исходник надо давать, там косяк какой-то скорее всего в имени файла неправильный или где-то в букве ошиблись - посмотрите внимательней, попейте кофе потом на трезвый глаз смотреть.

BorisL
22.05.2007, 18:15
Вот так?

var clip_mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {
trace(target_mc._width+','+target_mc._height);
xx = Math.round((Stage.width * 100) / target_mc._width);
yy = Math.round((Stage.height * 100) / target_mc._height);
trace(xx+','+yy);
target_mc._xscale = xx;
target_mc._yscale = yy;
};

clip_mc1.addListener(mclListener);
clip_mcl.loadClip(muv, target_mc);

У вас в предпоследней строчке ошибка: clip_mc1 вместо clip_mcl.

Вот рабочий код, проверил:

var clip_mcl:MovieClipLoader = new MovieClipLoader();

var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {
trace(target_mc._width+','+target_mc._height);
xx = Math.round((Stage.width * 100) / target_mc._width);
yy = Math.round((Stage.height * 100) / target_mc._height);
trace(xx+','+yy);
target_mc._xscale = xx;
target_mc._yscale = yy;
};

clip_mcl.addListener(mclListener);
clip_mcl.loadClip("Mystery MF-35.jpg", target_mc);

ellis
22.05.2007, 19:13
Да, действительно проблема была в опечатке.

Все большое спасибо! Работает! :)

Molecula
22.05.2007, 19:30
Теперь мы знаем кто кофе попил...