PDA

Просмотр полной версии : AttachMovie и прелоадер(чтобы как можно раньше начался)


Psychocat
01.09.2005, 03:37
АтачМуви удобная функция, но я использую в основном Дубликэйт, потому что когда мувик грузится, то сначала я так понимаю грузятся linkage export for action script мувики. Особенно это касается звука, кот. может быть 500+ кб.
А можно ли сделать, чтобы всё таки флэш сначала первый кадр с прелоадером загрузил, а потом уже всё остальное.?? А то получается первые 150кб висит пустой экран.
Update:
Наконец-то я разобрался :) Там когда ставишь Linkage стоит галочка по умолчанию Export in first frame! Галочку нужно убрать.
Теперь я снова буду использовать attachMovie
Update:
Ещё немаловажно то, что все мувики которые планируется АтачМуви загружать должны где-то в уже присутствовать в timeline. Может я опять чего не понял, но у меня если их в на линейке, то они и не загружаются.

ffffff
01.09.2005, 10:04
запихни лоадер в библиотеку! а вообще влэш сам выставляет что он поставит в начало свф и обычно он выставляет как раз те элементы, которые раньше всего будут требоваться.

Nео
01.09.2005, 11:32
чтоб быстрее начался, лучше всего использовать внешний прелоадер!

iNils
01.09.2005, 11:59
чтоб быстрее начался, лучше всего использовать внешний прелоадер!
как раз хуже, в каждом подгружаемом мувике придется вставлять пролоадер

Nео
01.09.2005, 12:16
как раз хуже, в каждом подгружаемом мувике придется вставлять пролоадер
возможно я не понял вопроса, но помоему здесь реч идет о том, что сначала должен закрузиться прелоадер, а потом остальной контент!
Поэтому я и советую сделать отдельным свф прелоадер, а потом в него грузить все остальное!

iNils
01.09.2005, 12:43
возможно я не понял вопроса, но помоему здесь реч идет о том, что сначала должен закрузиться прелоадер, а потом остальной контент!
поэтому я и советую сделать отдельным свф прелоадер, а потом в него грузить все остальное!
а зачем прелоадер подгружать, когда его можно сразу вставить в основной клип?

Nео
01.09.2005, 13:20
а зачем прелоадер подгружать, когда его можно сразу вставить в основной клип?
блин.... теперь ты меня не понял :)
делаем так:
1) А можно ли сделать, чтобы всё таки флэш сначала первый кадр с прелоадером загрузил, а потом уже всё остальное.?? А то получается первые 150кб висит пустой экран.
Первый кадр (с прелоадером) убираем нафиг!!! Остальное сохраняем! компилим!
2)делаем новый свф в котором пишем что-то вроде:
this.createEmptyMovieClip("preloader_mc", this.getNextHighestDepth());
this.preloader_mc.createTextField("percentReadout_txt", this.preloader_mc.getNextHighestDepth(), 0, 0, 50, 20);
//_root.attachMovie("preloader", "preloader_mc", 0);
preloader_mc._x = 300;
preloader_mc._y = 200;
var s = this.createEmptyMovieClip("swfProxy_mc", 1);
var my_mcl = new MovieClipLoader();
myListener = new Object();
myListener.onLoadStart = function(target_mc) {
var loadProgress = my_mcl.getProgress(target_mc);
var percent = "0";
preloader_mc.percentReadout_txt.text = percent+"%";
};
myListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
var percent = Math.round(loadedBytes/totalBytes*100);
preloader_mc.percentReadout_txt.text = percent+"%";
};
myListener.onLoadComplete = function(target_mc) {
var loadProgress = my_mcl.getProgress(target_mc);
var percent = Math.round(loadProgress.bytesLoaded/loadProgress.bytesTotal*100);
preloader_mc.percentReadout_txt.text = "done";
};
myListener.onLoadInit = function(target_mc) {
target_mc.play();
_root.preloader_mc.removeMovieClip();
};
my_mcl.addListener(myListener);
my_mcl.loadClip("http://.../my_swf.swf?"+Math.random()*100, s);

Psychocat
01.09.2005, 14:33
Хм... Внешний прелоадер. Надо попробовать, но это не очень хороший вариант. Когда мои игрушки будут ставить на других сайтах, там вообще прелоадера не будет.
Наконец-то я разобрался! Там когда ставишь Linkage стоит галочка по умолчанию Export in first frame! Так я думал, что это значит, что мувик будет загружаться и играться с первого кадра.
P.S.
Neo ты код писал для AS2? Я пока на флэш МХ. У меня таких штуковин, как getNextHighestDepth() loadClip() нету :(
Спасибо!

Бармалей
01.09.2005, 14:52
getNextHighestDepth() - это шестерка,
класс MovieClipLoader - семерка

Nео
01.09.2005, 14:52
Хм... Внешний прелоадер. Надо попробовать, но это не очень хороший вариант. Когда мои игрушки будут ставить на других сайтах, там вообще прелоадера не будет. Ну тогда конечно не подходит!
P.S.Neo ты код писал для AS2? Я пока на флэш МХ. У меня таких штуковин, как getNextHighestDepth() loadClip() нету :(
Спасибо! Да. Если работаешь с шестеркой, то можно использовать вместо каласса MovieClipLoader loadMovie, а вместо getNextHighestDepth() просто ставить уровни (хотя в шестерке getNextHighestDepth() помоему есть, но может я и ошибаюсь :) ), но луше поставь 2004 MX, тем более, что уже есть 8-й флэш!

Psychocat
01.09.2005, 15:07
Да. Я купил себе 2004МХ. Но как-то пока и не пробовал. А теперь уже 8й? Млин...
А 8й так и назывется 8й или там типо 2005МХ?
В 6м getNextHighestDepth() нет(если не нужно что-то специально делать), а кстати функция swapDepths() очень глюченная. Надеюсь в 8м там получше с Депсами. Часто мне требуется.
С классами я пока ничего не знаю.

iNils
01.09.2005, 15:16
а кстати функция swapDepths() очень глюченная.

чем же?


Первый кадр (с прелоадером) убираем нафиг!!! Остальное сохраняем! компилим!
...
var my_mcl = new MovieClipLoader();
все намного проще делается и не надо на шестерку гнать, если у вас чтото не получается в ней, то просто руки кривые

Nео
01.09.2005, 15:17
А 8й так и назывется 8й или там типо 2005МХ?http://www.macromedia.com/software/flash/flashpro/?promoid=BINT
а кстати функция swapDepths() очень глюченная.А что в ней глюченного, можно поподробнее? Сколько не юзал, ничего не глючило! :rolleyes:

Nео
01.09.2005, 15:20
все намного проще делается и не надо на шестерку гнать, если у вас чтото не получается в ней, то просто руки кривые
вообще-то я на 6-ку не гнал, а с руками у меня все в порядке! :mad:

iNils
01.09.2005, 15:40
вообще-то я на 6-ку не гнал, а с руками у меня все в порядке! :mad:
но луше поставь 2004 MX, тем более, что уже есть 8-й флэш!
Хуже 2004 MX, только Photoshop CS2

Nео
01.09.2005, 16:02
я же не сказал, что 6-ка - оцтой, а 7-ка - руль!
Просто в 7-ке больше возможностей, а заявление
Хуже 2004 MX, только Photoshop CS2 не обосновано(чисто субъективное мнение)!!!

iNils
01.09.2005, 16:09
не обосновано(чисто субъективное мнение)!!!
Только что дали мне файл в mx 2004 для поиска ошибки.
Открыл.
Залез в один из мувиков.
Сделал изменения.
Залез в другой.
Сделал изменения там.
Понял что в первом надо вернуть все на место.
Но вот не задача, исправить первый клип можно только отменив все дейстия во втором.

Просто в 7-ке больше возможностей
на каждый достаток 7ки, я найду недостаток. так что лучше не будем спорить

Psychocat
01.09.2005, 16:24
http://www.macromedia.com/software/flash/flashpro/?promoid=BINT
А что в ней глюченного, можно поподробнее? Сколько не юзал, ничего не глючило! :rolleyes:
У меня такое. Когда я делаю свуэпДепс(цифра) просто мувику он дублируется и становится 2 одинаковых. Поэтому я обычно сначал делал duplicateMovieClip() даже тем что нужны в 1м экземпляре. Потом при совпадении глубин один из мувиков удаляется(не уверен, что всегда), возможно это из-за того что все мувики у меня всегда были со свэпдепс. Это для того чтобы те что ближе(ниже) должны перекрывать тех что дальше. А они всё время перемещаются.
Код был примерно такой this.swapDepths(_x*640+_y*400);
Но ведь они должны менятся глубинами, а не перемещаться.
А в игре Атака Роботов у меня стоит setMask(или типа того). Так там вообще робот мог внезапно появится, т.е. быть невидимым пока в него не попадёшь(Думаю это было из-за свуэпДепс). И обэекты тоже иногда пропадали. Вобщем в Атака Роботов я отказался от свуэпДепсс. Можно заметить, что вылетающие из далека роботы перекрывают нормальных. К счастью игра хорошая и с этим недочётом.
P.S.
Новая версия глюченее предыдущей - обычное дело.

Nео
01.09.2005, 17:59
trace(mc.getDepth());//читаем текущий уровень
mc.swapDepths(20);//меняем уровень на 20-й
trace(mc.getDepth());//читаем текущий уровень
mc._x += 40;//сдвигаем клип(если я правильно тебя понял, то под ним должен быть еще один, но у меня второй не появляется)

7thsky™
01.09.2005, 21:44
если хочешь сделать легкий первый фрайм с прелоадером, просто у бери экспорт в первом фрейме для всех линкайдж, на первом фрайме преладере который перескакивает на 3 после загрузки а на втором фрейме выложи на тайм лайн все линкайдж которые тебе нужно

iNils
01.09.2005, 21:47
если хочешь сделать легкий первый фрайм с прелоадером, просто у бери экспорт в первом фрейме для всех линкайдж, на первом фрайме преладере который перескакивает на 3 после загрузки а на втором фрейме выложи на тайм лайн все линкайдж которые тебе нужно
вот это я и имел ввиду когда говорил, что "все намного проще делается", но ввиду того что про это уже не раз здесь говорилось моральных сил мне не хватило сказать еще раз :)
Спасибо 7thsky™ за то что он сказал...

Psychocat
02.09.2005, 00:01
Я так понял NEO провёл эксперимент с дублированием после свэп депс.
Я тоже попробовал сейчас. Вроде бы окей. Я не знаю почему так было, т.к уже тот движёк исправил.
Возможно это глюк конкретно моего флэша был.
Уменя глюк если я открываю MovieExplorer потом ищу допустим все переменные mkl+=10 и меняю их, то после сохранения файла все эти изменения не сохраняются, а остаются mkl+=10.
Ох. Надеюсь что со свэпДепс действительно не всё так плохо. Может были глюки из-за сочетания с дупликэйтМувик. Знаешь, когда я делаю unloadMovie(); не существующему клипу то он удаляет весь мувик, из которого я это делаю. Т.е. когда удаляешь мувик вложенный в нём. Разве это справедливо?
Со звуком тоже были глюки. Типо вложен мувик в мувик. На первом фрейме вложенного мувика звук, далее анимация. Допустим он перескочил на кадр где чувак Айкает. Вроде как кадр со звуком прошёл и анимация пошла, а он мне так звук пускает, как будто я делаю gotoAndPlay(1) на кадр со звуком. 100% недоработка.
Этот движёк у меня есть можешь посмотреть.
управление 1й игрок правая панель с цифрами 4,8,6, Home,Pgup,End,Pgdn
2й D,R,G E,T(блок, бег) Q,W удар рукой ногой.
В воздухе только удар ногой работает. Можешь сделать комбо рукой-рукой-ногой-ногой.