Haxe: ключевая анимация без рамок
Вопрос
Я хотел бы сделать простую (цикличную) анимацию (перемещение, изменение альфа-канала и т. д.) в Haxe (flash9). У меня нет ничего похожего на фреймы в моей библиотеке, только однокадровые ресурсы.
Так как я начинающий. Я не обязательно ищу сложные рамки. Я был бы счастлив с чем-то быстрым & грязный. Возможно, if
проверяет 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
}
}
Я знаю основную идею анимации ключевых кадров. Что я ищу, так это больше о том, как структурировать эту часть программы .
Не могли бы вы дать мне несколько советов о том, как мне поступить?
Решение
Если вы хотите создавать анимацию, я очень рекомендую использовать библиотеку анимации движения , хотя я понимаю, что вы, возможно, захотите изучить основы, прежде чем & обманывать " мимо них.
Я бы рекомендовал подключать анимацию к событию ENTER_FRAME вместо таймера, работающего с той же скоростью, что и частота кадров. На самом деле нет необходимости разъединять эти два параметра, поскольку таймер не более надежен, чем событие ENTER_FRAME, и нет необходимости перемещать объекты, если их все равно не видно.
Кроме того, я не думаю, что вам следует уделять слишком много внимания " ключевому кадру " анимация. Это полезная концепция, когда у вас есть ключевые кадры, а если нет, то гораздо практичнее просто сделать то, что кажется лучшим способом реализовать это. Р>
Я бы добавил сюда некоторый код, но мне было немного сложно придумать какой-либо из них, так как я не совсем уверен, чего вы пытаетесь достичь здесь. Р>
Другие советы
Вероятно, стоит прочитать chapter7_tweening.pdf из книги Роберта Пеннера, хотя сейчас очень устаревший с точки зрения кода, он охватывает концепцию анимации. Р>
Но, возможно, не стоит изобретать велосипед ...
Feffect - хороший механизм межплатформенной анимации, Actuate проще и быстрее в использовании. Использование макросов для анимации движения - это, пожалуй, лучший подход, но, возможно, его немного сложно начать ( tinkerbell ).