4

我想在 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
    }

}

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

你能给我一些关于我应该如何进行的指示吗?

4

2 回答 2

4

如果你想做动画,我非常推荐使用间库,尽管我知道你可能想在“作弊”之前学习基础知识。

我建议将您的动画连接到 ENTER_FRAME 事件,而不是让计时器以与您的帧速率相同的速度运行。真的没有必要将这两者解耦,因为计时器并不比 ENTER_FRAME 事件更可靠,而且如果无论如何都看不到它,也没有必要移动东西。

另外,我认为您不应该过多关注“关键帧”动画。当您拥有关键帧时,这是一个有用的概念,如果您没有关键帧,那么做一些感觉是实现这一点的最佳方式会更实用。

我会在这里放一些代码,但是我很难想出任何代码,因为我不确定您要在这里实现什么。

于 2009-01-17T19:58:22.233 回答
0

可能值得一读Robert Penner 书中的chapter7_tweening.pdf,虽然现在在代码方面已经过时,但它涵盖了补间的概念。

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

Feffect是一个很好的跨平台补间引擎,Actuate使用更简单,速度也更快。使用宏进行补间可能是最好的方法,但开始可能有点复杂(tinkerbell)。

于 2012-10-01T05:22:30.307 回答