Haxe:没有框架的关键帧动画

时间:2009-01-17 12:56:37

标签: flash animation structure haxe keyframe

我想在Haxe(flash9)中做简单(循环)动画(移动,更改alpha等)。我没有任何类似于我的库中的帧,只有单帧资产。

因为我是初学者。我不一定在寻找复杂的框架。我很乐意快速和快速脏。也许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
    }

}

我知道关键帧动画的基本思想。我正在寻找的更多是关于如何构建程序的这一部分

您能否告诉我如何进行操作?

2 个答案:

答案 0 :(得分:4)

如果你想做动画我非常推荐使用tweening库,虽然我知道你可能想要在“欺骗”过去之前学习基础知识。

我建议将动画连接到ENTER_FRAME事件,而不是以与帧速率相同的速度运行的计时器。实际上没有必要将这两者分离,因为定时器并不比ENTER_FRAME事件更可靠,并且如果无论如何都无法看到它,就没有必要移动它们。

另外,我认为你不应该把重点放在“关键帧”动画上。当你拥有关键帧时,这是一个有用的概念,如果你不这样做,那么做一些感觉就像实现这个的最好方法一样更实用。

我会在这里放一些代码,但是我有点困难,因为我不确定你在这里想要实现什么。

答案 1 :(得分:0)

从罗伯特·彭纳的书中可能值得阅读chapter7_tweening.pdf,虽然现在在代码方面已经过时,但它涵盖了补间的概念。

但也许不值得重新发明轮子......

Feffect是一个很好的跨平台补间引擎,Actuate更易于使用且速度更快。使用宏进行补间可能是最好的方法,但启动时可能有点复杂(tinkerbell)。