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

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

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

Регистрация: Oct 2013
Сообщений: 6
Question Как правильно создать анимацию персонажа

Недавно начал осваивать AS3, для этих целей использую FlashDevelop.
И конечно хочется написать хоть простенькую но СВОЮ игру. Мне все было понятно до этого момента
Суть вопроса в том, как правильно сделать анимацию персонажа. Например есть две картинки с ходьбой человека, на одной правая нога впереди левая рука сзади на другой наоборот. Как организовать чтобы они менялись? Какие средства для этого нужны? И так ли вообще должна происходить анимация или есть другой способ?

Старый 09.02.2014, 23:41
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 2  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
flash.display.DisplayObjectContainer.swapChildren

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

Регистрация: Oct 2013
Сообщений: 6
Нуу, да для описанной выше пойдет. А для более качественной анимации что использовать? И можно всего персонажа вместе с его логикой и анимацией выгрузить в какой-нибудь файл, а потом просто добавить как объект в сцену и передавать ему параметры на которые он будет реагировать?
И задам еще глупый вопрос... Главный класс унаследован от спрайта, в нем переменной типа спрайт присваивается объект класса спрайт, сам этот класс находится в другом файле, но в этом же пакете. Вот примерный код второго/не главного класса:
var cir:Sprite = new Sprite;
cir.graphics.beginFill(0xFFCC00);
cir.graphics.drawCircle(30, 30, 30);
addChild(cir);
Кто подскажет, почему кружочек не рисуется? Рисуется только когда addChild() напишу в главном классе.


Последний раз редактировалось maxdemented; 10.02.2014 в 02:08.
Старый 10.02.2014, 01:58
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 4  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Тоже интересует данный вопрос. Видел как люди ставят метки на какой-то промежуток анимации. Например из 15 кадров, где 1 кадр - его обычная стойка, а 15 кадр, где он делает шаг. Этот промежуток в 15 кадров как-то обозначается и в конце привязан скрипт gotoAndPlay("goDown");. Но я до сих пор не понял как ставить флажки)

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
И задам еще глупый вопрос... Главный класс унаследован от спрайта, в нем переменной типа спрайт присваивается объект класса спрайт, сам этот класс находится в другом файле, но в этом же пакете. Вот примерный код второго/не главного класса:
var cir:Sprite = new Sprite;
cir.graphics.beginFill(0xFFCC00);
cir.graphics.drawCircle(30, 30, 30);
addChild(cir);
Кто подскажет, почему кружочек не рисуется? Рисуется только когда addChild() напишу в главном классе.
Вы на сцену второй класс добавляете?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Рисуется только когда addChild() напишу в главном классе.
Представьте, у вас на кухне стол. Это stage. Вы сидите за столом и просите маму "разбей яйцо и помести его на сковородку". У вас возникает вопрос, почему яйцо при этом не оказывается на столе перед вами? Ну а с чего вы хотите увидеть на сцене предмет, который туда не помещали?
Есть такое понятие DisplayList — Список Отображения. Те объекты, которые добавлены в этот список, отображаются. Не все, какие были созданы программой, а только те из них, что были добавлены в Список. Поэтому какие то объекты могут существовать и даже что-то делать, но при этом не отображаться на экране, что, уж поверьте, очень удобно и, хотя и требует чуть больше памяти, зато улучшает быстродействие, так как объекты не нужно создавать каждый раз, когда хочется их показать. Например, кнопка может хранить все свои состояния уже отрисованными, и при взаимодействии с мышью только добавлять нужный стейт в Список, а ненужный удалять из него. Но не из памяти, а только из отображения.
Этот Список — вложенный, или, если хотите, "дерево". На самом верху его основной контейнер — Stage, представляющий область отображения флэшплеера. В нем находится экземпляр вашего Документ-класса, главный контейнер Приложения/swf-файла. В котором Вы создаете уже разные экземпляры классов, контейнеры (мувиклип, спрайт) и не контейнеры (битмап, шейп, текстфилд) и можете добавлять их в отображение с помощью addChild() и addChildAt() (Документ-класс помещается в отображение автоматически, не нужно писать stage.addChild(main) .
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
в нем переменной типа спрайт присваивается объект класса спрайт, сам этот класс находится в другом файле, но в этом же пакете.
Не очень понятно, что вы имели в виду.
Правильно делается так:
Создается класс, он наследуется от Sprite, в нём рисуем.
Код AS3:
package 
{
  public class MyCircle extends Sprite
  {
    public function MyCircle()
    {
      super.graphics.lineStyle(2, 0x000000);
      super.graphics.beginFill(0x0055CC);
      super.graphics.drawCircle(50, 50, 50);
    }
  }
}
А в главном классе:

Код AS3:
var myCircle:MyCircle = new MyCircle();
this.addChild(myCircle);
Добавлено через 2 минуты
Опоздал.)

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
SuriTheAngel, почему у Вас графикс это свойство супер-класса, а addChild() — метод this? Вы его переопределили в главном классе что-ли?
__________________
Reality.getBounds(this);

Старый 11.02.2014, 01:56
maxdemented вне форума Посмотреть профиль Отправить личное сообщение для maxdemented Найти все сообщения от maxdemented
  № 9  
Ответить с цитированием
maxdemented

Регистрация: Oct 2013
Сообщений: 6
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Представьте, у вас на кухне стол. Это stage. Вы сидите за столом и просите маму "разбей яйцо и помести его на сковородку". У вас возникает вопрос, почему яйцо при этом не оказывается на столе перед вами? Ну а с чего вы хотите увидеть на сцене предмет, который туда не помещали?
Есть такое понятие DisplayList — Список Отображения. Те объекты, которые добавлены в этот список, отображаются. Не все, какие были созданы программой, а только те из них, что были добавлены в Список. Поэтому какие то объекты могут существовать и даже что-то делать, но при этом не отображаться на экране, что, уж поверьте, очень удобно и, хотя и требует чуть больше памяти, зато улучшает быстродействие, так как объекты не нужно создавать каждый раз, когда хочется их показать. Например, кнопка может хранить все свои состояния уже отрисованными, и при взаимодействии с мышью только добавлять нужный стейт в Список, а ненужный удалять из него. Но не из памяти, а только из отображения.
Этот Список — вложенный, или, если хотите, "дерево". На самом верху его основной контейнер — Stage, представляющий область отображения флэшплеера. В нем находится экземпляр вашего Документ-класса, главный контейнер Приложения/swf-файла. В котором Вы создаете уже разные экземпляры классов, контейнеры (мувиклип, спрайт) и не контейнеры (битмап, шейп, текстфилд) и можете добавлять их в отображение с помощью addChild() и addChildAt() (Документ-класс помещается в отображение автоматически, не нужно писать stage.addChild(main) .
Если что-то хочется вывести на экран, все это нужно добавлять через addChild() и addChildAt() ТОЛЬКО в главном классе? Если так, или нет поправьте пожалуйста, просто надо чтобы в мозгах как-то уложилось Главный класс (main) от спрайта имеет список отображения, а любой другой (например "drugoy") тоже от спрайта имеет свой список отображения... иии если я в классе "drugoy" добавлю что-то через addChild() это попадет в его список отображения. А главный класс какбы перекрывает его и поэтому ничего не рисуется. Нужно добавлять в список отображения главного класса. Так? %) сорри за сумбурность...

Старый 11.02.2014, 02:11
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 10  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Добавлять дисплей объекты можно где Вам хочется и где это вообще возможно, но нельзя добавлять их на stage! Нельзя делать - stage.addChild(...);
Если Вы добавили кружок в класе Другой, то он не попадёт в список отображения, так-как он сам в нем не находится. Автоматически только класс Main добавляется и если Вы хотите ещё что-то туда добавить, то нужно сначала получить ссылку на список отображения. Но если Вы добавить в Main класс экземпляр класса Другой .. addChild(Другой), то и объекты из этого Другой тоже попадут в список отображения.

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

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

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


 


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


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