Просмотр полной версии : уменьшение загружаемого клипа
Есть флешка, в которую динамически грузится клип. Высота и ширина загружаемого клипа больше, чем размер флешки. Нужно уменьшить клип пропорционально до размеров флешки.
Есть такой код, но клип не уменьшается. Подскажите, в чем ошибка?
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;
MovieClipLoader вам поможет.
Изменила загрузку клипа.
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 срабатывают. Если же оставить переменные - не работает.
Неправильно. Сперва клип грузим, потом с ним работаем. Для этого и нуже MovieClipLoader и его неповторимое onLoadInit.
Вот так?
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);
Очень похоже. Если работает, то так.
Хотя погодите, вы хотите его на всю сцену? После загрузки доступны и ширина и высота, можно просто
mclListener.onLoadInit = function(target_mc:MovieClip) {
target_mc._heigth = Stage.height;
target_mc._width = Stage.width;
}
А до загрузки непонятно, что такое ширина клипа который еще не загружен. А вы на это пытались разделить.
С 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);
}
с onLoadComplete - тоже не работает.
Клип загружается, но с ним ничего не происходит. Даже trace не выводится.
Molecula
22.05.2007, 18:05
Исходник надо давать, там косяк какой-то скорее всего в имени файла неправильный или где-то в букве ошиблись - посмотрите внимательней, попейте кофе потом на трезвый глаз смотреть.
Вот так?
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);
Да, действительно проблема была в опечатке.
Все большое спасибо! Работает! :)
Molecula
22.05.2007, 19:30
Теперь мы знаем кто кофе попил...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.