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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.09.2015, 15:16
alanq вне форума Посмотреть профиль Отправить личное сообщение для alanq Найти все сообщения от alanq
  № 1  
Ответить с цитированием
alanq

Регистрация: Aug 2015
Сообщений: 26
По умолчанию Анимация движения

Всем доброго времени. Суть проблемы такова:
- Есть клип в библиотеке с метками "Left" и "Right" соответственно анимация движения объекта влево и вправо.
- В FlashDevelop создал класс который в массив добавляет эти самые метки и свободно возможно было проигрывать по типу
Код AS3:
_mс.gotoAndPlay('left');
.
А вот при создании еще одного класса управления движением и соответственно что бы при движении в ту или иную сторону по типу
Код AS3:
_mc.x += 3;
_mс.gotoAndPlay('left');
Объект движется, но нет анимации?!? Что делать как быть? Может тыкнет кто в урок какой или еще чего. В общем нужно при нажатии клавиши Left смещать объект влево и проигрывать анимацию с меткой Left, соответственно и в другую сторону.
Сильно не ругайте я только учусь!

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Но если вы в каждом кадре выполняете _mс.gotoAndPlay('left'), то каждый кадр клип и будет переходить на анимацию "left", то-есть постоянно переходить на первый её кадр.

Старый 05.09.2015, 17:36
alanq вне форума Посмотреть профиль Отправить личное сообщение для alanq Найти все сообщения от alanq
  № 3  
Ответить с цитированием
alanq

Регистрация: Aug 2015
Сообщений: 26
т.е. я так понимаю в этом
Код AS3:
_mc.x += 3;
_mс.gotoAndPlay('left');
нужно грубо говоря убрать
Код AS3:
_mс.gotoAndPlay('left');
и вместо него поставить некую новую функцию которая и будет проигрывает анимацию?

Старый 05.09.2015, 20:47
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Я правильно понимаю, эти строки лежат где-то в enterFrame?
Код AS3:
_mc.x += 3;
_mс.gotoAndPlay('left');
Если да, то вам нужно единожды выполнить команду _mс.gotoAndPlay('left'), и после этого смело уже запускать enterFrame с _mc.x += 3.

Старый 05.09.2015, 22:09
alanq вне форума Посмотреть профиль Отправить личное сообщение для alanq Найти все сообщения от alanq
  № 5  
Ответить с цитированием
alanq

Регистрация: Aug 2015
Сообщений: 26
понял спасибо. Как то забыл про это) Вечно проблемы в самом простом.

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

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Код AS3:
if (_mc.currentFrame == 1) _mс.gotoAndPlay('left');
__________________
Я заклинаю вас действовать иначе.

Старый 06.09.2015, 13:02
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 7  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от Bletraut Посмотреть сообщение
Код AS3:
if (_mc.currentFrame == 1) _mс.gotoAndPlay('left');
Но там не известно на каком диапазоне кадров расположена анимация left.

Старый 07.09.2015, 09:52
alanq вне форума Посмотреть профиль Отправить личное сообщение для alanq Найти все сообщения от alanq
  № 8  
Ответить с цитированием
alanq

Регистрация: Aug 2015
Сообщений: 26
Цитата:
Сообщение от Bletraut Посмотреть сообщение
Код AS3:
if (_mc.currentFrame == 1) _mс.gotoAndPlay('left');
Т.е. если с 25 кадра то
Код AS3:
if (_mc.currentFrame == 25) _mс.gotoAndPlay('left');
?

Старый 07.09.2015, 17:29
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 9  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
Сообщение от alanq Посмотреть сообщение
Т.е. если с 25 кадра то
Код AS3:
if (_mc.currentFrame == 25) _mс.gotoAndPlay('left');
?
Тут нужно смотреть как устроена анимация, я когда только учился кодить делал так

1) 1-й кадр анимация персонажа в состоянии "Стоит неподвижно", на этом кадре написано
Код:
stop();
со 2 по 25 кадр анимация ходьбы персонажа
на 26-м кадре стоит код
Код:
gotoAndStop(1);
с 27 по 40 кадр анимация прыжка персонажа
на 41 кадре стоит код
Код:
gotoAndStop(1);
Анимацию в таком случае я программировал так

Код AS3:
if (e.keyCode == Keyboard.LEFT && player.currentFrame == 1) player.gotoAndPlay(2); // для бега влево
if (e.keyCode == Keyboard.UP && player.currentFrame == 1) player.gotoAndPlay(27); // для прыжка
2) Второй подход заключался в создании нескольких кадров "state", "run", "jump", в эти кадры соответственно клались соответствующие мувики с анимацией и код выглядел так

Код AS3:
if (e.keyCode == Keyboard.LEFT)
{
    player.gotoAndStop("run");
}
else if (e.keyCode == Keyboard.UP)
{
    player.gotoAndStop("jump");
}
else 
{
    player.gotoAndStop("state");
}
Конечно, я привел здесь упрощенные схемы анимации т.к. в реальной игре нужно делать кучу дополнительных условий для определения анимации, например, состояние персонажа, получил ли персонаж урон, стоит ли персонаж на земле и т.д.

3) Третий подход - не использовать флеш вообще. Сейчас я создаю анимацию через tilesheet и прочие вещи...
__________________
Я заклинаю вас действовать иначе.

Старый 07.09.2015, 17:44
alanq вне форума Посмотреть профиль Отправить личное сообщение для alanq Найти все сообщения от alanq
  № 10  
Ответить с цитированием
alanq

Регистрация: Aug 2015
Сообщений: 26
Спасибо. Я использую такой подход, т.к. пока только учусь. Позже буду пробовать как вы говорите "не использовать флеш")
Код AS3:
if (e.keyCode == Keyboard.LEFT)
{
    player.gotoAndStop("run");
}
else if (e.keyCode == Keyboard.UP)
{
    player.gotoAndStop("jump");
}
else 
{
    player.gotoAndStop("state");
}

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

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

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


 


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


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