Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: анимация
Flash Zone Forum > Macromedia Flash > Начинающим
nikolay00700
Всем привет. Недавно начал осваивать flash.

Делаю анимацию следующим образом:

например у меня 20 кадров (разные картинки).
я создаю 20 объектов. делаю visible=falsh

а при запуске анимации, у видимой картинки делаю visible=falsh, а у следующего кадра vusible=true...

перебор кадров посредством: addEventListener(Event.ENTER_FRAME, animation);

Код пишу на FlashDevelop

У меня всё работает, но...
Чутьё подсказывает, что делаю это как-то коряво. Перерыл все поисковики, но не смог найти информации о том, как правильно сделать анимацию...


Так как же всё-таки правильно реализуется анимация из нескольких кадров-картинок.? Покажите, пожалуйста простой пример....
HaWK
Цитата
а при запуске анимации, у видимой картинки делаю visible=falsh, а у следующего кадра vusible=true...

Ужас. А что головка таймлайна совсем обленилась? Открываете редактор Flash, рисуете вручную каждый кадр и всё. Он сам будет всё проигрывать, не надо парится с visible = falsh и true.
MustLive
Цитата
Так как же всё-таки правильно реализуется анимация из нескольких кадров-картинок.?

nikolay00700

Анимацию нужно делать без использования ActionScript (без переключений true/false видимости объектов). Просто размещая изображения в кадрах таймлана.

Вариантов здесь три:

1. Нарисовать покадрово на таймлане. О чём выше сказал HaWK.

2. Если изображения уже есть в отдельных файлах и хочется их использоваться (в этом случае нужно хорошо подумать и учесть все факторы, т.к. другие варианты более предпочтительны), то загружаете все эти изображения в проект и размещаете по одному по кадрам таймлайна.

3. Использовать для создания промежуточных кадров анимации Motion Tween или Shape (там где это подходит). Что позволит не создавать промежуточные кадры вручную.
nikolay00700
Я пишу на FlashDevelop, там нет такого понятия поместить во фрейм...
nikolay00700
Вот примерный код:

------------------------------------------------------------------------

public var coin:Array = new Array(); // переменная содержит массив из объектов монетки
public var coin_ani_status:int; // этап анимации монетки


// создаем 9 объектов - 9 кадров движения монетки... делаем visible=false
public function creat_coin():void
{
var coin1:coin_01 = new coin_01();
coin[1] = coin1;
var coin2:coin_02 = new coin_02();
coin[2] = coin2;
var coin3:coin_03 = new coin_03();
coin[3] = coin3;
var coin4:coin_04 = new coin_04();
coin[4] = coin4;
var coin5:coin_05 = new coin_05();
coin[5] = coin5;
var coin6:coin_06 = new coin_06();
coin[6] = coin6;
var coin7:coin_07 = new coin_07();
coin[7] = coin7;
var coin8:coin_08 = new coin_08();
coin[8] = coin8;
var coin9:coin_09 = new coin_09();
coin[9] = coin9;

for (var b:int = 1; b <= 9; b++)
{
coin[b].visible = false;
coin[b].x = 8;
coin[b].y = 438;
addChild(coin[b]);
}
}

// запуск анимации монетки
public function coin_animation():void
{
addEventListener(Event.ENTER_FRAME, animation_coin);
}

// сама анимация монетки
public function animation_coin(e:Event):void
{
var t:int = int(coin_ani_status);
if (t == 1) {coin[1].visible = true;}
if (t == 2) {coin[1].visible = false; coin[2].visible = true;}
if (t == 3) { coin[2].visible = false; coin[3].visible = true; }
if (t == 4) { coin[3].visible = false; coin[4].visible = true; }
if (t == 5) { coin[4].visible = false; coin[5].visible = true; }
if (t == 6) { coin[5].visible = false; coin[6].visible = true; }
if (t == 7) { coin[6].visible = false; coin[7].visible = true; }
if (t == 8) { coin[7].visible = false; coin[8].visible = true; }
if (t == 9) { coin[8].visible = false; coin[9].visible = true; }
if (t == 10) { coin[9].visible = false; coin[1].visible = true; }
if (t == 11) {coin[1].visible = false; coin[2].visible = true;}
if (t == 12) { coin[2].visible = false; coin[3].visible = true; }
if (t == 13) { coin[3].visible = false; coin[4].visible = true; }
if (t == 14) { coin[4].visible = false; coin[5].visible = true; }
if (t == 15) { coin[5].visible = false; coin[6].visible = true; }
if (t == 16) { coin[6].visible = false; coin[7].visible = true; }
if (t == 17) { coin[7].visible = false; coin[8].visible = true; }
if (t == 18) { coin[8].visible = false; coin[9].visible = true; }
if (t == 19) { coin[9].visible = false; coin[1].visible = true; }

if (t == 90) { coin_ani_status = 0; }
coin_ani_status = coin_ani_status + 1;


}


-------------------------------------------------------------------

Всё это работает без проблем. Но мне кажется, что можно сделать всё гораздо проще.
Объясните как сделать по-другому...
nikolay00700
Ну есть кто-нибудь?
HaWK
Приятель, ты выбрал какой-то очень фиговый способ анимировать. Найди себе редактор Flash (Adobe Flash CS* или Flash от Macromedia).
chingachgoog
Цитата(nikolay00700 @ 17.12.2011 - 19:10) *
// создаем 9 объектов - 9 кадров движения монетки... делаем visible=false


В данном случае кадр только 1 (один). Просто видимость объектов меняется в этом одном кадре.
А можно делать многокадровые анимации (с использованием так называемого таймлайна). Для этого нужен либо флеш-редактор (платный), либо очень сильно напрячься и во FD попытаться построить байт-массив-свф-ку, которая содержит нужные кадры (т.к. нативным скриптом создается мувик только с 1 кадром). Но 2-й способ - мегаизврат.
MustLive
Надеюсь nikolay00700 понял все доступные способы создания анимации во флеше, о которых мы ему написали. Добавлю к сказанному chingachgoog.

Что помимо флеш-редактора (старых версий от Macromedia или новых версий от Adobe) есть ещё и другие программы, как платные, так бесплатные, которые можно использовать для создания swf-файлов (о которых я писал на форуме). В том числе и флешки с анимацией.
Русская версия IP.Board © 2001-2017 IPS, Inc.