Просмотр полной версии : Анимация "последовательной" загрузки мувиков
mj_nooker
30.09.2009, 16:01
Интересно, кто как анимирует последовательное "появление" мувиков на сцене? Я имею в виду, кликаете на менюшке, сначала появляется, например, объект фон, потом по очереди появляются остальные объекты-участники.
setInterval? или на таймлайне? или и так и так? и что "выгодней" использовать для экономии ресурсов системы ? (= экономить копейки?) Плз, поделитесь соображениями по этому поводу?
к примеру, на одном из сайтов крео-эталонов, я видел, как сначала появляется разрез дома, потом мувики интерьера внутри, далее - гаджеты, и, наконец, секретарь за столом )))
Можно использовать класс Tween и менять с его помощью альфу от 0 до 100, например. Тогда в проекте уж точно можно оставить только по одному первому кадру во всех структурах.
import mx.transitions.Tween;
item_mc._alpha = 0; //сначала объект скрыт (прозрачен)
var myTween1:Tween;
item_btn.onRelease = function() {
myTween1 = new Tween(item_mc, '_alpha', mx.transitions.easing.Strong.easeOut, 0, 100, 1.5, true);
}
То есть по нажатию на кнопку за полторы секунды прозрачность мувика item_mc плавным рывком выводится из нуля до полной видимости.
И вслед можно организовать появление следующего объекта:
var myTween2:Tween;
myTween1.onMotionFinished = function() {
myTween2 = ....
};
То есть когда заканчивается первое движение, тут же стартует другое.
И т.д... Можно делать разные виды плавности. Почитайте о Tween.
mj_nooker
30.09.2009, 21:51
mooncar, спасибо за идею! О Tween'е знаю и, видимо, я неполностью сформулировал вопрос, ибо нужно было ещё добавить "ПО МЕРЕ ЗАГРУЗКИ мувика" - тоесть, мне нужно поразмыслить, как реализовать появление мувиков по мере их подгрузки из инета - мол загрузился главный фон, показался, и только после этого загружается\показывается следующий подгружаемый мувик, например блок с контентом, потом так-же блок с графикой и т.д. Например делать анимацию "проявления" уже после загрузки или сделать очередь загружаемых файлов и показывать их по мере загрузки\очереди, и .тд.
Скорее всего верным решением будет СПЕРВА все загрузить в ролик, а потом проявлять.
Используете MovieClipLoader.
Если же вам хочется все-таки, чтобы по мере подгрузки все проявлялось, то также используете MovieClipLoader.
А там после всех "предварительных ласк" с организацией лоадера и старта самой загрузки пишете ваш вызов анимации прозрачности в методе onLoadInit:
loader.onLoadInit = function() {
var myTween1:Tween;
myTween1 = new Tween(item_mc, '_alpha', mx.transitions.easing.Strong.easeOut, 0, 100, 1.5, true);
};
mj_nooker
01.10.2009, 02:57
Хорошая мысль с MoviClipLoader'ом!
Однако, для эксперимента, попробовав загрузить несколько специально весомых swf (в среднем 90-100Кил) я столкнулся с тем, что мувики загружаются не по очереди, ХОТЯ пушаются в MCL по строгой очереди, и поэтому так слёту не смогу додуматься, как дожидаться загрузки каждого мувика из очереди и только потом загружать следующий.
Поэтому всё-таки идея с изначальной загрузкой сразу всех мувиков и только после этого следующего отображения - в данный момент наверное-таки действительно самая.
спасибо!
Ага, загрузите все и потом распоряжайтесь загруженным как хотите, так надежнее. Однако, если все же хотите ускорить процесс, то вот какая штука:
ХОТЯ пушаются в MCL по строгой очереди, и поэтому так слёту не смогу додуматься
Если говоря о строгой очереди, вы используете цикл или стартуете загрузки с задержкой через setInterval, то огорчу вас - как будет загружать флешка ролики, это одной ей известно, а точнее известно только теплой компании флеш-плеера, браузера и канала связи.
Выход прост: для того, чтобы действительно была цепочка, конвеер, нужно стартовать следующий при гарантированном окончании загрузки предыдущего. То есть задать старт загрузки следующего ролика внутри метода onLoadInit предыдущего, параллельно с запуском анимации загруеженного:
......
item1_mc._alpha = 0;
item2_mc._alpha = 0;
item3_mc._alpha = 0;
....
//организуем MCL
...
loader1.loadClip('item1URL', item1_mc.cont);
loader1.onLoadInit = function() {
var myTween1:Tween;
myTween1 = new Tween(item1_mc, '_alpha', mx.transitions.easing.Strong.easeOut, 0, 100, 1.5, true);
loader2.loadClip('item2URL', item2_mc.cont);
};
loader2.onLoadInit = function() {
var myTween2:Tween;
myTween2 = new Tween(item2_mc, '_alpha', mx.transitions.easing.Strong.easeOut, 0, 100, 1.5, true);
loader3.loadClip('item3URL', item3_mc.cont);
};
.....
.....
//и т.д.
mj_nooker
01.10.2009, 21:04
принял к размышлениям и взял на вооружение! )
спасибо!
Добавлено через 17 часов 39 минут
гм, чёт я пересидел ночью и вот подумалось - а что, если мувиков будет больше десятка и вручную описать все - будет нелогично, а логично - придумать хитрость с присвоением динамических имён мувикам и функциям?
гм
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.