15.5 创建动画
在这一章开始,我们说过要创建动画库,在这里,很多页都过去了,还没有看到一个动画。这应该是十分清楚的,我们一直在构建的所有基础,都是为了对我们的绘图进行动画处理更容易。
让我们简单回顾一下,到目前为止所做的工作。我们创建了一个类型 Behavior<'T>,表示行为随时间变化的值,还有一些函数,用来基于旧的行为创建新的行为。我们还创建了一个绘图类型(在 F# 中叫 Drawing,在 C# 中叫 IDrawing),连同一些构造和操作函数一起。我们如何使用这两个组件创建动画呢?
动画
你可能把动画的概念描述为一个绘图随着时间而变化。我们已经看到,我们能够用行为表示随着时间变化的值,所以,动画是一个绘图的行为。这意味着,可以使用 Behavior<Drawing> 类型表示动画。
根据这个定义,我们已经实现了一个用于创建动画的库!让我们看一下,如何使用现有的类型创建动画。在上一节结束的时候,我们在 F# 中创建了一个简单的绘图(称为 greenAndBlue 的值)。我们可以把它转换成动画,使用一个创建常量行为的函数:
> let animDrawing = forever greenAndBlue;;
val animDrawing : Behavior<Drawing>
结果的类型是 Behavior<Drawing>,这就是我们将用来表示动画的类型。这仅仅是最弱意义上的动画:绘图始终保持不变,但对于至少尝试显示动画,这足够了。是最后创建应用程序运行动画的时间了。