Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Анимация "последовательной" загрузки мувиков (http://www.flasher.ru/forum/showthread.php?t=130634)

mj_nooker 30.09.2009 16:01

Анимация "последовательной" загрузки мувиков
 
Интересно, кто как анимирует последовательное "появление" мувиков на сцене? Я имею в виду, кликаете на менюшке, сначала появляется, например, объект фон, потом по очереди появляются остальные объекты-участники.
setInterval? или на таймлайне? или и так и так? и что "выгодней" использовать для экономии ресурсов системы ? (= экономить копейки?) Плз, поделитесь соображениями по этому поводу?

к примеру, на одном из сайтов крео-эталонов, я видел, как сначала появляется разрез дома, потом мувики интерьера внутри, далее - гаджеты, и, наконец, секретарь за столом )))

mooncar 30.09.2009 20:14

Можно использовать класс Tween и менять с его помощью альфу от 0 до 100, например. Тогда в проекте уж точно можно оставить только по одному первому кадру во всех структурах.
Код AS1/AS2:

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 плавным рывком выводится из нуля до полной видимости.
И вслед можно организовать появление следующего объекта:

Код AS1/AS2:

var myTween2:Tween;
myTween1.onMotionFinished = function() {
  myTween2  = ....
};

То есть когда заканчивается первое движение, тут же стартует другое.
И т.д... Можно делать разные виды плавности. Почитайте о Tween.

mj_nooker 30.09.2009 21:51

mooncar, спасибо за идею! О Tween'е знаю и, видимо, я неполностью сформулировал вопрос, ибо нужно было ещё добавить "ПО МЕРЕ ЗАГРУЗКИ мувика" - тоесть, мне нужно поразмыслить, как реализовать появление мувиков по мере их подгрузки из инета - мол загрузился главный фон, показался, и только после этого загружается\показывается следующий подгружаемый мувик, например блок с контентом, потом так-же блок с графикой и т.д. Например делать анимацию "проявления" уже после загрузки или сделать очередь загружаемых файлов и показывать их по мере загрузки\очереди, и .тд.

mooncar 30.09.2009 21:56

Скорее всего верным решением будет СПЕРВА все загрузить в ролик, а потом проявлять.
Используете MovieClipLoader.
Если же вам хочется все-таки, чтобы по мере подгрузки все проявлялось, то также используете MovieClipLoader.
А там после всех "предварительных ласк" с организацией лоадера и старта самой загрузки пишете ваш вызов анимации прозрачности в методе onLoadInit:
Код AS1/AS2:

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 по строгой очереди, и поэтому так слёту не смогу додуматься, как дожидаться загрузки каждого мувика из очереди и только потом загружать следующий.
Поэтому всё-таки идея с изначальной загрузкой сразу всех мувиков и только после этого следующего отображения - в данный момент наверное-таки действительно самая.

спасибо!

mooncar 01.10.2009 03:30

Ага, загрузите все и потом распоряжайтесь загруженным как хотите, так надежнее. Однако, если все же хотите ускорить процесс, то вот какая штука:
Цитата:

Сообщение от mj_nooker (Сообщение 854899)
ХОТЯ пушаются в MCL по строгой очереди, и поэтому так слёту не смогу додуматься

Если говоря о строгой очереди, вы используете цикл или стартуете загрузки с задержкой через setInterval, то огорчу вас - как будет загружать флешка ролики, это одной ей известно, а точнее известно только теплой компании флеш-плеера, браузера и канала связи.
Выход прост: для того, чтобы действительно была цепочка, конвеер, нужно стартовать следующий при гарантированном окончании загрузки предыдущего. То есть задать старт загрузки следующего ролика внутри метода onLoadInit предыдущего, параллельно с запуском анимации загруеженного:

Код AS1/AS2:

......
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 минут
гм, чёт я пересидел ночью и вот подумалось - а что, если мувиков будет больше десятка и вручную описать все - будет нелогично, а логично - придумать хитрость с присвоением динамических имён мувикам и функциям?

гм


Часовой пояс GMT +4, время: 11:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.