От Juanlu_001 на 31 март 2008 г. с 91 951 посещения

люлеене

Както показва заглавието му, той е написан с цел да даде систематичен начин да накара обекти като махала или подобни да трептят по реалистичен начин, като също така дава множество възможности, като например спиране или не с течение на времето или това на за да може да направи няколко завъртания около точката на въртене, без да губи ефекта на реализма. Разбира се, напълно е адаптивно за постигане на различни скорости.

За да разберете този урок, не е необходимо да имате задълбочени познания за ActionScript, а само основни понятия.

Подготовка на махалото

За да започнете, създайте нов документ с големи размери (особено в горната част), с предпочитания от вас цвят на фона и с честота на кадрите в секунда от 40 fps, която използвам аз. В нов слой нарисувайте нещо като махало, което "виси" от линия (колкото по-дълго го направите, толкова по-добре ще бъде оценен ефектът) в обща позиция на почивка (не му давайте първоначален наклон, когато го рисувате), конвертирайте го в MovieClip и му дайте име на екземпляр ("удар" в моя случай). Точката за регистрация трябва да е на „въжето“, от което виси махалото, където искате да се люлее. Ето как беше моето „махало“:

След това можем да му дадем ротация (-30º например) и да продължим да пишем кода.

Определение на основни променливи

За начало ще определим поредица от променливи, които ще са необходими, за да се постигне по-късно люлеещото се движение. Ние пишем тези редове код във MovieClip:

Фактът, че теглото е положително за това въртене, а не обратното, се дължи само на начина, по който съм повдигнал уравненията.

Тези първи редове код ще служат за дефиниране на двете основни променливи за движението. Ще ги обясня в следващата стъпка, като напиша формулата, която ще го създаде.

Трептящо движение без забавяне

Сега пишем тези редове и във MovieClip:

Сега ще обясня малко това: това, което прави това поведение, е във всеки кадър да добавите към скоростта теглото, което сме му дали, с което то ще се увеличава всеки път (това ще постигне ефекта на ускорение). Ако приемем, че първоначалното въртене е отрицателно (т.е., че е наклонено надясно) и че следователно първоначалното тегло е по-голямо от нула, при достигане на въртене малко по-голямо от нула, първото условно ще се активира и тежестта ще се промяна на знака (this._rotation = 0.1; е така, че да не се „забие“) и следователно ще се забави, докато скоростта достигне 0. В този момент махалото ще се върти все по-бързо и по-бързо в посока На напротив, докато достигне - с отрицателно тегло, запомнете - завъртане, малко по-малко от 0, което ще бъде, когато се активира второто условно и теглото се върне, за да има положителен знак.

До тук и с тези няколко реда вече е постигнат люлеещ ефект; единственият недостатък е, че той никога не спира. Нека отстраним това:

Трептящо движение със забавяне

Сега трябва да добавим нова променлива: съпротивление, която ще участва само когато махалото се "изкачва", за да го забави.

Нека добавим тези редове в частта onClipEvent (load) < >:

Не се нуждае от обяснение. Сега в onClipEvent (enterFrame) заместваме скорост + = тегло; от следното:

Това е, за да не спирате на една страна и да не ускорявате на другата. Можем също да променим знака на съпротива, както направихме с тежестта, но това ще бъде малко по-сложно.

Сега ще трябва да определим поведение, което да различава кога махалото се издига и кога не. За това добавяме повишаване = вярно; във всяко от двете условия, които имахме преди и нещата стоят по следния начин:

Новите линии не се нуждаят от много обяснения: когато махалото се издига, съпротивлението вече не е нула и в момента, в който скоростта се променя от положителна на отрицателна или обратно (което е сигналът, че достига точката максимум и следователно ще намалее), покачването е фалшиво и съпротивлението е нула.

Това има проблем и това е, че идва момент, когато махалото остава да вибрира, без да спира и резултатът може да е луд в някои случаи (увеличете, ако не го виждате). Следователно ще въведем друга променлива: аз го нарекох коефициент на стабилизиране или CE.

За да обобщим, ще кажем, че кодът най-накрая е такъв:

Не се нуждае от много обяснения: всеки път, когато въртенето се промени от положително на отрицателно или обратно, CE се умножава по 1,1; по този начин, когато достигне 10, поведението, което произвежда люлеенето, спира да се изпълнява и махалото спира.

С това бихме могли да завършим нашия урок, но все още има нещо интересно, което можем да направим.

Приложение: С още няколко обиколки

Нека си представим, че във филма ви има някаква система за задвижване на махалото. Ако трябваше да има достатъчно скорост, за да се обърне, написаните от нас редове не са достатъчни: трябва да добавим още няколко условни. Те не са за какво да пишат вкъщи, те имат синтаксис, аналогичен на другите два:

Фактът за задаване на CE на 0 е необходим, за да не достигне стойността, която ние посочваме, така че махалото да спре преждевременно.

Попълвайки кода, който вече имахме с тези две условни условия, нашето махало вече може да направи всички необходими завои, без опасност от грешки.

Знаете ли SQL? íNo-SQL? Научете MySQL, PostgreSQL, MongoDB, Redis и други с него Професионален курс по бази данни който започва във вторник, на живо.