Этого треда уже нет.
Это копия, сохраненная 29 сентября 2014 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
5 Кб, 300x280
Здравствуйте, >аноны. Нужна помощь со умирающим, но здравствующим Flash.
Есть два ключевых кадра. Между ними налажен Motion Tween, но стоят они впритык. Суть в том, что с использованием лишь AS3 и категорически без использования кадрового стола нудно сделать между ними плавный переход. Остается вопрос - как это реализовать?
И вообще, Flash Thread Go. Приглашаются всё желающие, смогу помочь лишь небольшим советом, ибо сам недавно им занялся.
#2 #122066
Я обычно пользуюсь в таких случаях TweenMax, но хз как он будет работать в кадрах, тем более с такими стартовыми условиями. В mx библиотеке ещё есть какой-то стандартный твин. Вопрос в том, зачем тебе именно так нужно.
#3 #122082
>>122050
Хуйню какую-то написал.
#4 #122092
>>122050

>сделать между ними плавный переход


Возможно ли каким-то образом узнать количеств окадров, требующихся для анимации?
23 Кб, 1079x286
ОП #5 #122103
>>122050
Дополню свой опус.
Короче, есть один MovieClip, который вмещает в себя кучу других с навешанными MotionTween'ами. Используется он для анимации ГГ, и структура его следующая: 60 кадров для ходьбы и один для стояния. Если персонаж стоит, то выполняется команда gotoAndStop(61);, если же двигается, то каждый кадр идет на проверка вроде if (currentFrame == 61) gotoAndPlay(1);, дабы не залезать на тот самый кадр простаивания. Ну так вот, я желаю, дабы после остановки ГГ он не мгновенно перескакивал на последний кадр, а медленно морфился. Как это реализовать?
Надеюсь, понятно объяснил.
#6 #122105
>>122103
По идее, анимация остановки - это задача артиста/аниматора, а не твоя. Ладно бы персонаж состоял из кусков руки/ноги/тор/голова, у которых есть координаты и поворот, и ты бы мог вытащить из последнего кадра кординаты и поворот для каждой части тела и твином анимировать эти параметры, но там же скорее всего есть анимация кривых, я без понятия как можно добраться к векторному рисунку через AS3.
Лучший твой выход - доебаться к артисту, чтобы он запилил.
ОП #7 #122107
>>122105

> Ладно бы персонаж состоял из кусков руки/ноги/тор/голова


Так ведь так и есть!

> Лучший твой выход - доебаться к артисту, чтобы он запилил.


Я бы сам к себе доебался бы, но подозреваю, что есть вариант получше.

> бы мог вытащить из последнего кадра кординаты и поворот для каждой части тела и твином анимировать эти параметры


Вот тут бы поподробнее.
#8 #122108
>>122103
А как твой персонаж начинает ходьбу? По идее, если следовать твоей логике, он резко перескакивает со стояния, хотя по идее здесь должна быть плавная анимация.
Если тебе нужна привязка именно к этому кадру, то видимо тебе придётся поместить в последний кадр мувиклип и в нём уже сделать анимации остановки. А потом обращаться через параметры экземпляра этого мувиклипа и переходить на кадр, с которого начинать проигрывание остановки. Но это далеко не лучший вариант.
Как сказал >>122105 эта задача артиста но предполагаю, что ты хочешь добиться, чтобы с любого текущего кадра была плавная анимация остановки так как фаза шага в момент остановки может быть любая и ты наверное подразумеваешь нечто вроде динамического твина, который генерится в момент, когда персонаж начал останавливаться. Думаю это можно сделать программным путём с помощью например fl.transitions. Конечно это ещё зависит от иерархии фигуры персонажа.
ОП #9 #122109
>>122108

> ты наверное подразумеваешь нечто вроде динамического твина, который генерится в момент, когда персонаж начал останавливаться


Именно! Вроде бы наткнулся на описание пакета Tween и Easing, но ничего большего, чем движение квадратика сделать не смог.
#10 #122111
>>122109
Мне сейчас немного недосуг ковыряться, пока напишу в общих чертах как я это вижу, но думаю это вариант без использования для этих целей последнего кадра (этот кадр используется только для случая, когда персонаж стоит изначально).
По событию момента когда ты отжал кнопку движения вызываешь твин, который вернёт руки/ноги в начальные положения (углы можно по идее тоже твинить с помощью либ, типо transitions и др., например, tweenMax). Тебе для этого понадобятся начальные значения углов поворотов и координат рук/ног в системе координат, относительно персонажа. Создание твина должно получить аргументы условно: (текущее положение/углы ног/ рук) ----> (начальное положение/углы ног рук).
#11 #122112
>>122050
Если они стоят впритык, то там твина как такового быть не может. Ты можешь аппроксимировать твин из двух положений, т.е. взять все трансформы в первом кадре и сделать линейное (ну или как угодно заизеное) изменение до кадра n, в котором все трансформы будут, как в исходном втором кадре. Это довольно тривиально делается.

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

Уточни исходные условия, ощем. А еще лучше, закинь файл куда-нибудь, можешь покромсать из него половину, чтобы не спиздили.
#12 #122114
>>122112

> взять все трансформы в первом кадре и сделать линейное (ну или как угодно заизеное) изменение до кадра n


Поподробнее.
#13 #122120
>>122050
Есть ещё такой вариант ОП, может он окажется самый крутой.
Смотри по всем 60 кадрам движения, какие из них визуально ближе всего к положению неподвижного стояния персонажа, которое у тебя в 61. Пометь эти кадры, где-нибудь в массиве, далее, смотрим, на каком кадре останавливается ходьба (в какой момент отпущена кнопка "идти") и смотрим, к какому из сохраненных кадров мы ближе всего, и проигрываем анимацию от текущего до сохраненного (возможно ускоренно/замедленно, чтобы анимация торможения длилась всегда фиксированное время), и неважно, даже если в обратную сторону. В конце ставим гоТуЭндСтоп(61).
Вообще анимацию бы увидеть, чтобы дельно сказать, но мне кажется должно прокатить.
Более того, у тебя у персонажа есть инерция движения, он замедляется/стартует не мгновенно? Если так, то время разгона/торможения можно использовать для аниации плавного торможения/старта.
#14 #122121
Да, жалко, что дял флеша нет никакого аналога меканим из юнити.
#15 #122139
>>122109
https://docs.google.com/file/d/0ByV22Fl8ar5WUTFRcTgwX3N2VW8/edit
Вот, сделал несколько экспериментов, тут три примера анимации с транзишенами. Не уверен, что это то что тебе нужно, я бы стал реализовывать этот подход, если бы вообще отказался от работы с кадрами и анимировал бы всё только кодом. Но на всякий случай посмотри, может тебя на какую-то идею натолкнёт. Это может применяться, если элементы являются экземплярами классов и ты можешь к ним обращаться из кода.
1. Возвращение ноги в начальное положение одними транзишенами, изменением положения и углов частей от текущего к начальному. Т. к. амплитуда маленькая, не видно, что на самом деле это нельзя применять в таком виде.
2. Всё то же самое, только амплитуда шага больше, можно наблюдать, что на самом деле при большой амплитуде шага, подход с одними только транзишенами не применим, т. к. не задана траектория колена (вероятно можно её задать программно). Получается, транзишены положения линейные, а траектория должна быть дуговая.
3. Это доработанный второй пример, транзишены углов оставлены, а положение колена определяется с помощью тригонометрии. По логике получается упрощённо что-то вроде системы костей. Бедро поворачивается программным твином, в каждом кадре считается положение колена и в это положение помещается голень, которая в свою очередь поворачивается твином в начальное положение.

Ну и конечно это просто условные примеры, никакого ООП, нужно оборачивать в классы, бла-бла-бла.
И ещё мысль пришла, вроде как начиная с CS4 версии в Flash есть системы костей, может там есть какие-то программные подходы, я не юзал никогда.
ОП #16 #122140
>>122139
Спасибо вам, дорогие, но с проблемой уже разобрался.
После некоторого поиска в Googl'e, наткнулся на отличную библиотеку TweenLite/TweenMax, которая позволяет всё это делать в одну строчку TweenMax.to(this, 0.2, {frame: 61, ease: Linear.easeNone});. Помимо этого она позволяет делать еще очень много извратов над анимацией. Отличное дополнение, позволяющее не тратить время на написание собственных костылей.
#17 #122141
>>122140
Собственно это я и разжевал в
>>122139
Только там используется fl.transitions, это аналог TweenMax, только нативная для Flash и проприетарная. TweenMax имеет другую лицензию использования (необходимо платить только при коммерческого использования) и поэтому используется в основном для компиляции в сторонних редакторах типа FD, в которых нет системы кадров.
#18 #122143
>>122140
Я вот тебя ОП просто не пойму, вот ты вроде гуглом можешь пользоваться даже, а тхреад ты чем читаешь? Тут про TweenMax речь не раз заходила.
#19 #122147
>>122143

> Тут про TweenMax речь не раз заходила


Я так сильно был занят твоей мамкой, что не заметил упоминания о TweenMax.
#20 #122149
>>122147
Надеюсь это не ОП. иначе у меня для него плохие новости.
#21 #122150
>>122149
Таки это я.
А что не так-то, ммм?
#22 #122159
>>122150

>ммм


А ты похож на свою мать. Она тоже любит так делать, когда рот занят.
#23 #122161
>>122159
Фу. Как же толсто. Скучно с вами тут.
#24 #122167
>>122161

>Как же толсто


Уж ты бы мог привыкнуть, учитывая габариты твоей мамаши.

>Скучно с вами тут


Не то, что с твоей мамкой.
#25 #122168
>>122167
Лал.
163 Кб, 563x1000
ОП #26 #122232
Ладно, с анимацией я уже разобрался. Приношу извинения за свою невнимательность и игнорирование верного решения еще в первом сообщении. Но назрел второй вопрос. Как реализовать систему триггеров, аля квест? Создавать кучу объектов, наследующих от родителя основной функционал(взять, использовать)? Через список, определяющий действия для копии объекта через его уникальный ID? Как-то через XML?
P.S. Сношатель мамок - не я, совершенно другой человек. С какой целью он пишет бессмысленные сообщения, которые даже под троллинг не подпадают? Слабоумие?
#27 #122247
>>122232
Я не знаю какая у тебя структура проекта, но если бы я писал с нуля что-то подобное, то я бы реализовывал это с помощью PureMVC. Там есть довольно удобная система уведомлений (аналог простых событий, только проще раз добавлять listner'ы, и не нужно привязывать их к визуальному классу, то есть диспатчить такие события можно в любой момент из любого класса). Но если ты не собираешься встраивать что-то подобное, то можно привязать события, или группы событий к одному элементу, чтобы в одном месте их и обрабатывать или рассылать далее. По поводу игровых объектов много есть подходов, как по мне лучше каждую сущность в игре описать классом и потом с помощью методов этих классов взаимодействовать, собственно как ты и написал, только непонятно, что ты подразумевал под

>Через список, определяющий действия...

186 Кб, 563x1000
#28 #122250
>>122247

> Через список, определяющий действия...


Под этим я подразумевал следующее: Во флеше есть возможность давать инстанциям класса свои собственные названия. Допустим, у меня есть класс GameTrigger, и две его инстанции, с именами Banana и Door соответственно. Для того, дабы эти тригеры работали корректно, в классовой функции, срабатывающей на, допустим, касание игрока, можно сделать следующую проверку: switch(this.name) {case "Banana": player.fall(); case "Door": loadLevel("exit");}
#29 #122256
>>122247

> PureMVC


Чуви, гугли RobotLegs.

>>122250
http://gameprogrammingpatterns.com/
#30 #122257
Ты не поймёшь своего друга, пока не попробуешь его мамку.
#31 #122258
>>122256

>http://gameprogrammingpatterns.com/


Я бы не стал это рекомендовать. Пару месяцев назад я начал всерьёз интересоваться компонентными архитектурами и много гуглил. Так вот оказалось, что на этом сайте, во-первых, архитектура неправильная, во-вторых, автор пишет, что работал в ЕА, видел много хорошего кода и теперь хочет поделиться знаниями, но, в треде на реддите, этот же парень написал, что он компонентную архитектуру не использовал (что же он тогда делал, если все серьёзные игры уже лет пятнадцать только на ней и делаются) и просил ссылки почитать по теме.
И хер его знает, что ещё из того, о чём он пишет, он не использовал и не знает.
#32 #122259
>>122257
Мы все тебя поняли, друг.
44 Кб, 352x405
#33 #122260
#34 #122275
>>122258
Конечно, компонентная архитектура очень удобна для геймдева. Но судя по топику, уровень автора пока не высок и для начала книжка вполне ок.
И если мы говорим об одном и том же, компонентная архитектура решает проблему иерархии наследования, дублирования кода и т.д. А в приведенной книге разбор типовых задач, который можно использовать в том числе и внутри компонентного кода.
#35 #122276
>>122275

>компонентная архитектура


Да тут не в ней дело, она как пример просто. Суть в том, что тот парень, похоже, пиздит и пишет о том, в чём не разбирается.
То есть, если ты разбираешься в теме, прочитал ту книгу и можешь сказать, чтот там дальше всё адекватно расписано, то другое дело. Если нет, то ну ты понел.
28 Кб, 580x381
#36 #122280
sage #37 #122286
>>122276
Уймись, школьник. Все там адекватно уровню новичка и для первого знакомства с темой сойдет. Да и вообще, от чтения неадекватной хуиты адекватно никто еще неадекватно не умирал. Пруф: этот тред, твои посты.
#38 #122289
>>122286
Просто уйди.
#39 #122297
А разве TweenMax/Lite не имеет хуевую лицензию? ОП, гугли EazeTween.
#40 #122316
>>122289
Пошёл нахуй, архитектор мамкин.
#41 #122402
>>122316
FAK U!
32 Кб, 562x235
#42 #127363
Поднимаю мертвый тред. Подкиньте уроков по созданию освещения во флеше, в гугле выдает всякое непотребство.
356 Кб, 1024x1536
#43 #127516
>>127363
Бампаю.
#44 #127533
Репостну сюда пожалуй из соседнего треда про то, как мисатофаг не делает игру уже 5 месяцев.

>>126034
Скажите ламеру как в AS3 выдрать нужную анимацию вот с такой swfки, чтобы удобно менять было в нужный момент? Если делать так
[Embed(source = 'Name.swf', symbol = "Stay")]
то потом не выйдет переключить на другой символ же никак, кроме как сделать кучу классов под каждое действие и распихать все в кучу ифов, после чего в нужный момент удалять старого персонажа и создавать нового такого же. но с другой анимацией. Проще никак? Гуглил, но че-то не нашел нихуя полезного
#45 #127538
>>127533
Самое банальное - нафигачить кадров и переключать их, как это сделал ОП.
#46 #127540
>>127363
Блядь, как же я проиграл.
12 Кб, 514x314
#47 #127544
>>127538
Какие кадры переключать? Вот у тебя есть 5 чуваков. 1 идет, 1 стоит, 1 стреляет, 1 дрочит, 1 умирает - все это одна свфка. Теперь у тебя IDE, проект на AS3, как туда запихать лишь 1 чувака, так чтобы у него существовал какой-нибудь способ удобной смены анимации, например Chuvak.symbol = "Stay";
Распиши подробнее плз, напиши кодом. Сейчас я понял твой совет как "зафигачь лучше свф с 1 чуваком, который сначала стоит, потом бежит, потом дрочит и т.д., потом Embed, потом останови и юзай там как-нибудь очень акуратно nextFrame и nextScene", что звучит как-то нихуя не убедительно.
91 Кб, 1024x768
#48 #127604
>>127544
А графон где планируешь брать? Скилл есть, если сам?
29 Кб, 400x400
#49 #127621
>>127540
Не рви, анон, глотку, угости подскажи лучше.
#50 #127640
>>127604
Какой графон? Я сейчас даже не пилю ничего, я простой ньюфаг у которого несколько поделок со спецкурсов в универе и лд, который пытается разобраться как правильно встраивать swf до того как начнется местный конкурс.
А так скилла нет, но рисую сам, для тех игр что у меня были пиздатого скилла и не надо было.
Тред утонул или удален.
Это копия, сохраненная 29 сентября 2014 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски