![]() |
Анимация ходьбы
Я хочу сделать анимацию ходьбы героя в игре. Это отдельный символ, в нем четыре кадра: 1 - стоит, смотрит вправо, 2 - идет вправо (анимация ходьбы в отдельном символе, 3 - стоит, смотрит влево, 4 - идет влево. Мне надо, чтобы, пока зажата левая стрелка, проигрывалась анимация ходьбы влево, а пока зажата правая стрелка - ходьбы вправо. Вместо этого при запуске ролика и нажатии клавиши влево/вправо (до нажатия герой стоит, все нормально) герой начинает стоять при удерживании кнопки, а при отпускании начинает бежать. Вообщем, все получается ровно наоборот. Хотелось бы знать, как решить данную проблему.
Код первого кадра: Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
Вам было бы проще помочь, если бы Вы писали в классах.
А так как Вы пишете в кадрах, то могу посоветовать лишь почитать про design patterns State. Добавлено через 49 секунд Или же я могу маленький пример накидать в классе, если сможете разобраться, то скажите, мне не трудно. |
Цитата:
|
Код AS3:
Код AS3:
Код AS3:
Если что-то не понимаете, то спрашивайте, а то неохото все расписывать. Добавлено через 27 минут Или вот так - Код AS3:
|
Хорошо. Что хранит переменная _keyboardFlags?
|
Код AS3:
значение для свойства LEFT true. Понимаете? Если нажали влево, то сделали об этом запись, если нажали вправо, то тоже сделали запись. Да и само название свойства говорит, что в нем хранятся "флаги клавиатуры". Можно вопрос - Вы книги по as3 читали или учитесь по урокам и видео и если по урокам и видео, то as3 это первый Ваш язык? |
Цитата:
Добавлено через 3 минуты Хорошо, но в чем принципиальная разница между "записать нажатие и регулярно его проверять, если верно - выполнить действие" и "при нажатии выполнить действие" |
Тогда не садитесь за flash, пока книгу не прочтете, а то учится программировать в кадрах,
это пустая трата времени. |
@Wormhole
Извиняюсь за оффтоп @Gerbert Код AS3:
Код AS3:
Код AS3:
Оправданием использования {гет}/{сет}/{гет+сет} - аксессоров только для доступа к скрытому свойству может быть только одно - предполагаемому классу нужно прописать свойство, посредством интерфейса (интерфейсы описывают только методы, а getParam() / setParam(value:*) - это уже синтаксическая соль по сравнению с аксессорами). @Все, кто дочитал до моего поста включительно || прочитал только мой пост Извините, наболело... Да и седьмой литр темного пива для меня не просто детектор лжи, он провоцирует на откровенность :drinks: |
elder_Nosferatu, в одном маленьком-маленьком городе,
живет один человечек, который носит трусы поверх брюк. И вот этот человечек встречает Вас и спрашивает - "а почему ты не носишь трусы по верх брюк? Ответы, что это не правильно, не по дрескоду, и прочие, я слушать НЕ ХОЧУ!". Вот что Вы этому нехочухе ответите? |
Цитата:
Почему писать код в кадрах - это неправильно. Просто почему. Мне интересно знать, так как писать в кадрах я привык и это для меня кажется удобным. На крайняк могу сделать парочку простых классов. |
Цитата:
Можно и без, но это не ооп. Но я запомню Ваше пожелания и буду показывать так, как неправильно, но быстрее. Цитата:
|
Цитата:
выучить ооп - в крайнем случае полгода, учиться программировать в целом - несколько лет. Цитата:
|
Цитата:
Код AS3:
Если уж так приспичило ООПрограммировать, то делайте все правильно. Пример 1: Геттер возвращает копию _keyboardFlags, тем самым не даем возможности изменить извне значения флагов. [Encapsulation completed ;)] Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
Сорри, я не понял с первого раза о чем Вы.
Да Вы правы! Getter на _keyboardFlags в данной ситуации действительно не нужен. И я даже больше скажу, своё мнение я пытался обосновать мыслями, которые феерически, как фейверк, промчались по моему мозгу и точно так же растворились в потоке информации полученной из гугла. И после этого наступило настоящие просветление в отношении set-get. Спасибо! До этого я не в полной картине понимал и аксессоры и даже типы и даже само проектирование. Добавлено через 30 минут Но вот небольшой вопрос - SimpleButton от adobe имеет Код AS3:
так DO это не позволит. Но! Ведь я могу взять у кнопки этот стайт и поменять его координаты, ширину или даже перерисовать прикастовав его к Shape, это ведь тоже не защищает объект. И если следовать этому пути, то на DO вообще нельзя делать set-get... Что Вы по этому поводу можете сказать? |
Во первых, кнопке (экземпляру SimpleButton) плевать чем Вы ее напичкаете, главное, чтобы это были экранные объекты. А будут они прямоугольные, красные, большие или даже пустые внутри - дело Ваше.
Во вторых, как кнопка сможет сходу поменять разместить в себе Ваш апСтейт-объект, если бы у нее было просто публичное свойство upState без аксессоров? Можно, конечно прикрутить ей некий публичный метод refresh() и дергать его самостоятельно, после изменения значения одного из состояний, но зачем тогда аксессоры? Короче, предположу, что: Код AS3:
|
То есть, Вы считаете adobe таким примитивным, что у них состояния в сеттере меняются?)
Повторю вопрос в догонку - по Вашему мнению на DO вообще не нужно делать аксессоры, если конечно, что-то да не меняется, как в примере выше? Добавлено через 1 минуту И не подумайте, что я пытаюсь придраться, я уточняю, так как Вы обосновали свое мнение и я вижу в нем долю истины. |
Цитата:
Например кнопка находится в состоянии "UP" и Вы заганяете новое значение для upState. Вы считаете adobe таким примитивным, что на enterFrame-обработчике висит проверка "а не изменилось ли какое нибудь состояние"? По моему им хватило ума из сеттера инициировать замену. А как она производится мне уже не так интересно. В своем же примере я показал только общую идею, а не конкретную реализацию. Цитата:
Код AS3:
Цитата:
Цитата:
|
Думал, что можно ответить, но пришел к обычному - Спасибо!
|
| Часовой пояс GMT +4, время: 13:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.