Я хотел бы сделать простую (зацикленную) анимацию (перемещение, изменение альфы и т. д.) В Haxe (flash9). В моей библиотеке нет ничего похожего на фреймы, только отдельные фреймы.
Так как я новичок. Мне не обязательно нужна сложная структура. Я был бы доволен чем-нибудь быстрым и грязным. Возможно, ifs проверяют frame (переменную класса) и линейно интерполируют значения.
class MyClass extends Sprite {
static var frame:Int = 0;
static inline var framerate:Int = 25;
static function main() {
var app:MyClass = new MyClass();
flash.Lib.current.addChild(app);
}
private function new() {
super();
// init assets here
var myTimer:Timer = new Timer(1000/framerate);
myTimer.addEventListener(TimerEvent.TIMER, animate);
myTimer.start();
}
function animateForeground(event:TimerEvent) {
frame = (frame + 1) % 1000;
// set new values depending on frame
}
}
Я знаю основную идею анимации по ключевым кадрам. Я ищу больше о как структурировать эту часть программы.
Не могли бы вы дать мне несколько советов, как мне действовать дальше?
![[UX] Категории и настройки внешнего вида Flash-сообщений](https://i.imgur.com/5LZljB8b.jpeg)
Если вы хотите делать анимацию, я бы очень рекомендовал использовать библиотеку твининг, хотя я понимаю, что вы, возможно, захотите изучить основы, прежде чем «обмануть» их.
Я бы рекомендовал подключить вашу анимацию к событию ENTER_FRAME вместо таймера, работающего с той же скоростью, что и ваша частота кадров. На самом деле нет необходимости разделять эти два, поскольку таймер не более надежен, чем событие ENTER_FRAME, и нет необходимости перемещать вещи, если они все равно не видны.
Кроме того, я не думаю, что вам следует уделять столько внимания анимации «по ключевым кадрам». Это полезная концепция, когда вы используете ключевые кадры имеют, если вы этого не сделаете, гораздо практичнее просто делать то, что кажется лучшим способом реализовать это.
Я бы вставил здесь код, но мне немного сложно что-то придумать, так как я не совсем уверен, чего вы здесь пытаетесь достичь.
ENTER_FRAME запускается каждый раз при рендеринге кадра, «современная» разработка flash очень мало заботится о ключевых кадрах, в отличие от oldschool ActionScript 1.
Да, ENTER_FRAME запускается на вашей скорости fps, даже если у вас нет кадров.
Вероятно, стоит прочитать chapter7_tweening.pdf из книги Роберта Пеннера, хотя сейчас он очень устарел с точки зрения кода, он охватывает концепцию анимации.
Но, может быть, не стоит изобретать велосипед ...
Feffect - хороший кроссплатформенный движок анимации, Приводить в действие проще и быстрее в использовании. Использование макросов для анимации движения, возможно, является лучшим подходом, но, возможно, это немного сложно начать (Тинкербелл).
Спасибо. Я не понял, что такое ENTER_FRAME, так как у меня всегда будет один кадр (мне все еще трудно понять структуру объекта flash). Хотелось бы, чтобы был практичный способ создавать кадры на лету. Я проверяю твиннинг ...