Haxe: ключевая анимация без рамок - PullRequest
4 голосов
/ 17 января 2009

Я хотел бы сделать простую (цикличную) анимацию (перемещение, изменение альфа-канала и т. Д.) В Haxe (flash9). У меня нет ничего похожего на фреймы в моей библиотеке, только однокадровые ресурсы.

Так как я начинающий. Я не обязательно ищу сложные рамки. Я был бы счастлив с чем-то быстрым и грязным. Возможно if s проверка 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
    }

}

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

Не могли бы вы дать мне несколько советов о том, как мне поступить?

Ответы [ 2 ]

4 голосов
/ 17 января 2009

Если вы хотите создавать анимации, я бы очень рекомендовал использовать библиотеку tweening , хотя я понимаю, что вы, возможно, захотите изучить основы, прежде чем "обманывать" их.

Я бы рекомендовал подключать анимацию к событию ENTER_FRAME вместо таймера, работающего с той же скоростью, что и частота кадров. На самом деле нет необходимости разъединять эти два, поскольку таймер не более надежен, чем событие ENTER_FRAME, и нет необходимости перемещать объекты, если их все равно не видно.

Кроме того, я не думаю, что вы должны сосредоточиться на анимации "ключевых кадров". Это полезная концепция, когда у вас есть ключевые кадры, а если нет, то гораздо практичнее просто сделать то, что кажется лучшим способом реализовать это.

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

0 голосов
/ 01 октября 2012

Вероятно, стоит прочитать chapter7_tweening.pdf из книги Роберта Пеннера, хотя сейчас она сильно устарела с точки зрения кода, она охватывает концепцию анимации движения.

Но, может быть, не стоит изобретать велосипед ...

Feffect - это хороший кроссплатформенный механизм анимации движения, Actuate более прост в использовании и быстр. Использование макросов для твининга, возможно, является лучшим подходом, но, возможно, его немного сложно начать ( tinkerbell ).

...