![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Приветствую вас, уважаемые товарищи! Помогите пожалуйста с проблемой разобраться.
Короче! Есть MovieClipLoader, а при onLoadStart я хочу аттачить клип с прелоадером, чтобы отображать процесс загрузки во время onLoadProgress. Но вот почему-то не грузится ничего! Как же быть?? В самом клипе я прелоадер нарисовать немогу, т.к. он создается динамически. Вот код: var mcl:MovieClipLoader = new MovieClipLoader();
var mclL:Object = new Object();
mcl.addListener(mclL);
mclL.onLoadStart = function(target:MovieClip) {
target.attachMovie("prel", "preloader", this.getNextHighestDepth());
}
mclL.onLoadProgress = function(target:MovieClip, loaded:Number, total:Number) {
trace(target.preloader) // Выводит "undefined" :(
}
mclL.onLoadInit = function(target:MovieClip) {
target.realWidth = target._width;
target.realHeight = target._height;
target.flagLoaded = true;
target._width = prevWidth;
target._height = prevHeight;
indexMC = Number(target._name);
target._x = indexMC*(prevWidth+LV)+prevX;
target._y = prevY;
target._visible = false;
orderedVisualization(target);
if (imgCounter==loaderVars.allImages) {
mcl.removeListener(mclL);
delete mclL;
delete mcl;
Start();
}
imgCounter++;
}
function loadImg() {
for (var i:Number = 0; i<=loaderVars.allImages-1; i++) {
preview_mc.createEmptyMovieClip(i, preview_mc.getNextHighestDepth());
preview_mc[i].flagLoaded = false;
mcl.loadClip("photos/"+(i+1)+".jpg", preview_mc[i]);
}
loadImg();
__________________
Убейте меня! |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вы про контейнеры когда-нибудь слышали? Грузить клип надо в пустой мувик, который находится в контейнере. В этом контейнере сохранять нужные параметры, аттачить в него маски, прелоадеры и прочее. Не трогайте клип, в который грузите! Его нет, пока загрузка не закончится.
var mcl:MovieClipLoader = new MovieClipLoader();
var mclL:Object = new Object();
mcl.addListener(mclL);
mclL.onLoadStart = function(target:MovieClip) {
target._parent.attachMovie("prel", "preloader", this.getNextHighestDepth());
}
mclL.onLoadProgress = function(target:MovieClip, loaded:Number, total:Number) {
trace(target._parent.preloader) // Выводит "
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 02.09.2008 в 00:19. |
|
|||||
|
Я так уже пробовал, у меня сразу флеш вылетает какого-то хрена... Я подумал что что-то там неладное просто происходит.
![]() // update И на других компах вылетает... А вот когда я сделал так: то все стало нормально. Как думаете, что же это может быть то такое?
__________________
Убейте меня! Последний раз редактировалось джонатан; 02.09.2008 в 13:45. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
В первом посте: ты пытаешься засунуть мувик prev в контейнер, в который грузится изображение, что бесполезно.
В коде из второго поста в обработчике onLoadStart, this указывает на mclL, т.е. this.getNextHighestDepth() возвращает undefined, а в метод attachMovie(), в качестве параметра глубины, передается NaN вместо положенного integer, и он поэтому аттачит мувик "prel" loaderVars.allImage раз на нулевую глубину, вымещая при этом первый контейнер с изображением. Остальлные картинки должны грузиться нормально. В варианте номер три, ты создаешь мувик mc, для аттача в него prev, на 100 глубине, поэтому не стираешь первый контейнер с изображением, следовательно, все картинки нормально загружаются. prev при этом трижды аттачится в mc, на 0 глубину непонятно зачем. Последний раз редактировалось udaaff; 02.09.2008 в 23:48. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
udaaff : А почему трижды?
джонатан : не надо пихать this.getNextHighestDepth() везде. Если у Вас пустой, только что созданный, мувик, нет никакого смысла искать в нем "следующую свободную глубину" - они все свободны. К тому же, если еще плохо представляете себе области видимости функций, описанные udaaff ошибки почти неизбежны)) Конечно не надо создавать еще один контейнер в контейнере, теперь для прелоадера. Есть один контейнер, в нем - клип в который грузится картинка и в нем же - аттачится прелоадер. Считайте, что Вы вставляете картину в рамку. У рамки может быть стекло (маска), паспарту, этикетка и т.п. Эта картина в рамке - один объект, который Вы можете дальше использовать - повесить на стену, поставить на стол... Что касается кода - как я уже сказал, начал было исправлять, но понял что силов не хватит. Поэтому придерусь к кускам - mclL.onLoadStart = function(target:MovieClip) {
target._parent.attachMovie("prel", "preloader", target.getDepth()+2);
}
function loadImg() {
for (var i:Number = 0; i<=loaderVars.allImages-1; i++) {
preview_mc.createEmptyMovieClip(i, preview_mc.getNextHighestDepth());
preview_mc[i].flagLoaded = false;
mcl.loadClip("photos/"+(i+1)+".jpg", preview_mc[i]);
}
} // - разве здесь не должна быть скобка? у Вас нет.
loadImg();
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 03.09.2008 в 01:26. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Не знаю почему трижды
В уме серию из трех картинок проигрывал )) Наверное, поэтому.Трижды, в смысле, loaderVars.allImages раз ![]() |
|
|||||
|
Ндааа... Куда-то она запропастилась... Даже и не знаю куда! Но на самом деле не важно, это я просто тут опечатался...
Ну что ж. Спасибо вам. Вродебы понял в чем беда. Но я уже сделал иначе, а переделать - нет времени, по крайней мере пока. еще много чего предстоит сделать. Вот так вот у меня получилось: mclL.onLoadStart = function(target:MovieClip) {
target._parent.createEmptyMovieClip("mc", 100);
target._parent.mc.attachMovie("prel", "preloader", this.getNextHighestDepth());
target._parent.mc._y = (prevHeight / 2) - (target._parent.mc._height / 2) ;
if(prelN > 0) {
target._parent.createEmptyMovieClip("mc", 100);
target._parent.mc._x = (prevWidth * prelN) + (LV * prelN);
target._parent.mc.attachMovie("prel", "preloader", this.getNextHighestDepth());
target._parent.mc._y = (prevHeight / 2) - (target._parent.mc._height / 2) ;
}
}
mclL.onLoadProgress = function(target:MovieClip, loaded:Number, total:Number) {
loading = Math.round(loaded / total * 100);
target._parent.mc.preloader.gotoAndStop(loading);
target._parent.mc.preloader.progress_txt.text = loading + "%";
}
mclL.onLoadComplete = function(target:MovieClip) {
prelN ++;
}
mclL.onLoadInit = function(target:MovieClip) {
target._parent.mc.removeMovieClip();
target.realWidth = target._width;
target.realHeight = target._height;
target.flagLoaded = true;
target._width = prevWidth;
target._height = prevHeight;
indexMC = Number(target._name);
target._x = indexMC*(prevWidth+LV)+prevX;
target._y = prevY;
target._visible = false;
orderedVisualization(target);
if(fotoNum == 0) {
renderBMP(preview_mc[fotoNum]);
fotoNum++;
photo_txt.text = fotoNum + "/" + loaderVars.allImages;
}
if (iZ <= loaderVars.allImages-1) {
loadImg();
} else if (imgCounter==loaderVars.allImages) {
mcl.removeListener(mclL);
delete mclL;
delete mcl;
}
imgCounter++;
}
__________________
Убейте меня! |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
И зачем два раза повторять? Вы ведь не сообщение повторяете, Вы клипы аттачите.
Цитата:
И вот опять this.getNextHighestDepth() ! Вам ведь объяснили, что this здесь - экземпляр листенера, у него вообще никакой глубины нет. mc - только что созданный ПУСТОЙ мувик, аттачте на глубину 1 и не мучайте плеер дайвингами на мели.
__________________
Reality.getBounds(this); |
|
|||||
|
Banned
[+5 15.02.09]
[++5 15.02.09] Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
|
Все было бы проще если бы вы ему не советовали принимая его ошибки как должное. А показали бы действительно правильный и вазможно даже красивый код... Зачем создавать вообще этот листенер? >_>
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Так человек ничему не научится. Просто не захочет ничему учиться - приходи да бери. Пусть разбирается. Рабочий (не говорю "красивый")) пример я давал тут: http://flasher.ru/forum/showpost.php...9&postcount=10
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|