Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.08.2013, 23:20
allex вне форума Посмотреть профиль Отправить личное сообщение для allex Найти все сообщения от allex
  № 1  
Ответить с цитированием
allex
[+3 05.12.12]

Регистрация: Mar 2012
Сообщений: 46
По умолчанию управление анимацией спрайта

Доброго времени суток уважаемые формучане. Хочу спросить у гуру - как вы управляете анимацией спрайтов в разных случаях в работе приложения? Например у меня есть мувик человечка с 8 кадрами передвижения. Я загоняю в массив

Код AS3:
hero.move = new Array(1,2,3,4,5,6,7,8)
затем я создаю переменнюю для начала отсчёта

Код AS3:
hero.animstep = -1;
Затем по логике игры,когда нам нужна анимировать героя(например при нажатии клавиши) ,у нас в ENTERFRAME
происходит примерно так

Код AS3:
                        hero.animstep += 1;
				if (hero.animstep > hero.move.length) {
					hero.animstep = -1;
				}
				hero.gotoAndStop(hero.move[Math.floor(hero.animstep)]);
И так каждый в каждый такт происходит смена кадра при каком нибудь условии(например при Leftkey - true)
Всё работает,но у меня есть подозрения,что это как то всё не правильно,сильно грамозко. Плюсы,что для каждого действия объекта(спит,ест,бежит и т.д) мы создаём отдельный массив кадров и отдельно проигрываем его,а вот минус,я не могу его (этот метод) усовершенствовать,мне всё время для каждого спрайта писать один и тот же код.Может я пытаюсь сделать велосипед, и есть просто один метод ,который вы давно уже используете, в который можно было передать объект(герой или враги и т.д),его действие(массив с определенным навыком,нужный на этот момент) и может еще параметры .Чтоб он был просто отдельным классом.Извините,если это глупый вопрос.И всем спасибо

Старый 04.08.2013, 23:42
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 2  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
Может пригодится Анимация персонажа
__________________
FlashPress.ru | Blog

Старый 05.08.2013, 15:01
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 3  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Код AS3:
hero.animstep += 1;
if (hero.animstep > hero.move.length) {
	hero.animstep = -1;
}
hero.gotoAndStop(hero.move[Math.floor(hero.animstep)]);
0_0

Хотя бы...

Код AS3:
hero.animstep += 1;
if (hero.animstep >= hero.move.length) {
	hero.animstep = 0;
}
hero.gotoAndStop(hero.move[hero.animstep]);

Старый 05.08.2013, 15:21
allex вне форума Посмотреть профиль Отправить личное сообщение для allex Найти все сообщения от allex
  № 4  
Ответить с цитированием
allex
[+3 05.12.12]

Регистрация: Mar 2012
Сообщений: 46
maincode - большое спасибо за ответ,очень много полезной инфы!

MikroAcse - А чем вы мне пытаетесь помочь в моём вопросе? Я не спрашивал,как правильно сравнивать и стоит ли пользоваться Math.floor(это просто на всякий случай) .Читайте суть темы

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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