Отправляет email-рассылки с помощью сервиса Sendsay

Flash MX от А до Я

  Все выпуски  

Make your game with Flash MX


Информационный Канал Subscribe.Ru


mitemail@mail.ru Made by }}v{{!+е


Введение в ActionScript (продолжение).

Простите, что нет рисунков... Вернее они есть, но в целях экономии нервов я решил не переводить их в jpeg... Скачать данную статью в doc формате с рисунками в bmp можно отсюда http://mite.by.ru/asp.rar

Немного повторения, для закрепления пройденного материала, перед большим прыжком.

Анимация.
Flash представляет собой великолепное средство для создания анимации. Во-первых, создание роликов просто само по себе, во-вторых, векторная графика обеспечивает минимальный размер, ну и доступность воспроизведения, сегодня мало у кого нет встроенного в браузер флэш-плеера.
Самое лучшее в анимации на Flash - использовать Motion или Shape Tweening. Возможно, эти средства и устраивают кого-то. С одной стороны, использование Shape позволяет менять форму, что недоступно средствам ActionScript. Но если вам необходимо, чтобы ваш Movie двигался не по кругу, прямой или ломаной, а чтобы движение было неповторяющимся, хаотичным или ещё каким хотите, стандартными средствами не обойтись, нужно использовать ActionScript. Можно использовать Guide Layer, но, опять же, движение получться повторяющимся. Например вам нужно, чтобы что-то отскакивало от границ flash-окна. Это стандартный пример, но он очень хорошо иллюстрирует выгоду от скрипта. Такая вещь как Guided Layer вам не поможет, исчертите вы хоть весь экран, все равно движение будет повторятся. А вот c помощью ActionScript сделать это запросто. В Actions клипа, который должен отскакивать от стенок пишем всего-то:
onClipEvent (load) {
dx = 10;
dy = 10;
}
onClipEvent (enterFrame) {
_x += dx;
_y += dy;
if ((_x<=0) or (_x>=400)) {
dx = -dx;
}
if ((_y<=0) or (_y>=400)) {
dy = -dy;
}
}
Очень просто. Главное – вы экономите время и нервные клетки.
Конечно, это простой пример. Он не может показать выгоду. Но, представьте, что вам надо сделать снег, просто хлопья снега. Если вы начнёте делать ролик без ActionScript, то в скором времени достигнете результата, но мувик будет тормозить в геометрической прогрессии от количества хлопьев на сцене, да и размер будет неслабый. Выходом из положения может служить использование скриптов совместно со стандартными средствами анимации. Например, сделать клип, в котором снег летает из стороны в сторону. Скриптом размножить клип, запустить хлопья сверху вниз, добавить генератор случайных чисел… Зациклить всё это дело. И в итоге обязательно что-то получиться… Причем, это что-то будет небольшого размера и быстро работать.
Из всего вышесказанного можно сделать вывод: важно научиться использовать вместе ActionScript и встроенные инструменты анимации. Как проще – так и делайте. Только такое сочетание даст прекрасно выполненный, быстрый и, главное, маленький флэш.
Звук.
Со звуком дело обстоит труднее. Во Flash можно импортировать звук и вставлять его прямо во фреймы. И все было бы хорошо, но с этим звуком нельзя ничего сделать. То есть, конечно, можно поставить какой-нибудь эффект, зациклить, ещё как-нибудь поиздеваться, но это всё во время разработки. А если нужно изменить настройки прямо во флеше? Например, музыка на фоне других звуков играет сильно громко. Создатели Flash (огромное им спасибо) позаботились и об этом. Кто не знает, есть такой обьект Sound, который позволять со звуком практически всё. Причем во время проигрывания флеша, и изменять настройки можно динамически! Приведу простейший пример проигрывателя. Импортируете любой звук. В библиотеке кликаете по нему правой кнопкой мыши, выбираете Linkage… Разрешаете экспорт символа, вписываете идентификатор, например, “mSnd” (без кавычек). На сцене создаёте какие-нибудь две симпатичные кнопки. В Actions одной впишите следующий код:
on (release) {
s = new Sound();
s.attachSound("mSnd");
s.start(0,100);
}
Это будет кнопкой “Пуск”. В Actions второй напишите:
on (release) {
s.stop();
}
Эта кнопка будет останавливать проигрывание звука.
Теперь, создадим два ползунка для управления переменными volume и pan. Делаете кнопку, похожую на ползунок. В Actions кнопки пишите:
on (press) {
startDrag ("", false, left, top, right, bottom);
dragging = true;
}
on (release, releaseOutside) {
stopDrag ();
dragging = false;
}
Затем конвертируете её в клип и в Actions для клипа пишите:
onClipEvent (load) {
top = _y;
bottom = _y;
left = _x-50;
right = _x+50;
center = _x;
}
onClipEvent (enterFrame) {
if (dragging == true) {
_root.s.setPan(Math.floor ((_x-center)*2));
}
};
Теперь этот ползунок управляет балансом. Создаем ещё один, для громкости. Всё то же самое. В Actions для клипа ползунка впишите:
onClipEvent (load) {
top = _y;
bottom = _y;
left = _x-100
right = _x;
}
onClipEvent (enterFrame) {
if (dragging == true) {
_root.s.setVolume(Math.floor(_x-left));
}
}
Расположите ползунки и кнопки на сцене для лучшего вида. Готово!
Рис.2.
Изменяя значения громкости и баланса, вы меняете звучание. Для звука значения находятся в пределах от 0 до 100, для баланса от -100 до 100.
У объекта Sound есть еще методы, позволяющие творить со звуком чудеса, например setTransform(). Смотрите встроенную справку. Отсюда вывод: использовать объект Sound можно и нужно, тем более, если вы делаете серьезный проект вроде игры или сайта.
Прелодеры.
Ну вот мы и подошли к серьёзным вещам. Конечно, вы видели такие заставки, их вставляют перед большими роликами или играми. А всё из-за плохой скорости… Стандартными инструментами здесь вам не обойтись. ActionScript является единственным решением проблемы. В принципе, существует два вида прелодеров.
Первый тип основан на применении команды ifFrameLoaded(frame). Это самый простой и распространенный вид в сети. Условие проверяет, загружен ли фрейм с номером frame, и если загружен, выполняются некоторые действия: обычно, переход на начальный фрейм flash-ролика. Приведу пример.
Допустим, ваш ролик состоит из 50 фреймов. Первые 20 –прелодер. Обычно в них вешают какой-нибудь повторяющийся эффект или просто текст, типа “loading…”.
Рис.3.
Если вы сделаете эффект, важно, чтобы первый и последний фреймы прелодера были одинаковыми. Во фреймах с 21 по 50 располагается сам ролик (для тестов можно взять просто рисунок). В Actions первого фрейма впишите:
ifFrameLoaded (50) {
gotoAndPlay (21);
}
Если последний фрейм вашего ролика (50) загружен, то клип начинает проигрываться с 21 фрейма, то есть с начала ролика. Зациклим прелодер, вписав в Actions 20-ого фрейма:
gotoAndPlay (1);
Всё. Теперь прелодер будет проигрываться до тех пор, пока ваш флеш-ролик не загрузиться полностью. В принципе, оба Actions можно написать в 21-ом фрейме, получится то же самое. Совет: не увлекайтесь эффектами, иначе вашему супер-пупер прелодеру понадобиться ещё один, но поменьше.
Существует другой вид прелодеров. Они гораздо умнее своих собратьев и показывают такую информацию, как процент загрузки, скорость соединения, необходимое время и т.д. Этот вид встречается в сети гораздо реже…
Рассмотрим простой “умный” прелодер.
Сделайте три чистых фрейма. В Actions первого впишите:
OnePercent = this.getBytesTotal()/100;
В Actions второго:
tellTarget ("bar") {
gotoAndStop (Math.round(this.getBytesLoaded()/_parent.OnePercent));
}
if (this.getBytesLoaded()>=this.getBytesTotal()) {
nextScene ();
}
В Actions третьего:
gotoAndPlay (2);
Теперь создайте Movie Clip. Это будет полоса загрузки. Используя маски, Motion Tweening или всё, что хотите, создайте полосу загрузки, длиной ровно 100 фреймов. В Instance клипа впишите “bar”. Скопируйте клип во второй и третий фреймы сцены с прелодером.
Рис.5.
Функция getBytesTotal(), на которой основан данный прелодер, возвращает количество байт всего флэша, то есть размер. Команда getBytesLoaded() возвращает количество загруженных байт. Прелодер крутиться до тех пор, пока число подгруженных байт не станет равным общему размеру флэша, потом переходим на следующую сцену, где располагается ваш ролик. Чтобы добавить сцену, выберите Insert->Scene. Затем, переместите сцену с прелодером выше сцены с роликом в панели Scene (Modify->Scene…).
В этом прелодере можно обойтись и без добавления сцены: просто поместите ваш клип после прелодера, а в условии, вместо перехода на новую сцену, поставьте переход на первый фрейм ролика.
Ну, вот и всё на сегодня. Много неизведанного ещё таит Flash… Изучайте, узнавайте, быть может именно вы станете великим и ужасным…

Сайты, которые стоит посмотреть:

www.flashkit.com - лучший архив Flash исходников и ресурсов.

Скачать данную статью в doc формате можно отсюда http://mite.by.ru/asp.rar

Мой сайт - http://mite.by.ru/


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное