1

应该如何创建一个使用 C++ 补间的接口?例如,我想使用静态函数调用在 5 秒内淡化一张图片,例如:

Graphics::FadeSurface( Surface mySurface, int FrameHeight, int NumOfFrames,
   int FadeDirection, double Duration )

我有一个硬编码设置,它为需要执行的每个补间操作创建一个对象。我一直在使用 DeltaTime 变量来跟踪自程序启动以控制逻辑等以来已经过去了多少时间。我已经包含了一个示例(不那么精致)来向您展示我正在尝试做的事情:

示例逻辑循环:


gameLoop( double DeltaTime ){

    // ...
    // logic
    // ...

    bool isItDone = otherClass.HaveFiveSecondsElapsed( double DeltaTime );

    if( isItDone == true )
        exit(1);

    // ...
    // logic
    // ... 

}

补间类示例:


other_Class::other_Class(){

    InitialTime = 0;
    InitialTime_isSet = false;

}

bool other_class::HaveFiveSecondsElapsed( double DeltaTime ){

    // Setting InitialTime if it hasn't already been set
    if( otherClass.InitialTime_isSet == false ){

        otherClass.InitialTime = DeltaTime;
        otherClass.InitialTime_isSet = true;

    }

    bool toReturn = false;

    if( DeltaTime - InitialTime > 5 )
        toReturn = true;

    return toReturn;

}

任何帮助是极大的赞赏。谢谢!

4

1 回答 1

1

我为 java 构建了一个 Tween 引擎,该引擎足够通用,可用于对任何对象的任何属性进行补间。通用部分是通过定义一个“Tweenable”接口来完成的,用户需要实现这个接口来补间他们的对象。

我非常鼓励你将它作为构建引擎的灵感,或者直接移植它。我也可以计划一个自制的 C++ 移植,但是要保持它与当前的 Java 版本(增长非常快)保持同步需要做很多工作。

http://code.google.com/p/java-universal-tween-engine/

注意:我在这个问题中对这个引擎做了一个更详细的回答:
Android: tween animation of a bitmap

于 2011-04-13T14:05:42.087 回答