现在我知道如何以设定的速度在某个方向上移动一个物体,但我不知道如何在不使用动画的情况下沿着设定路径将一个CGPoint从一个CGPoint移动到另一个CGPoint,因此它可以是交互式的。还有一种方法可以在从A点到B点移动时应用斜率,因此它在移动时似乎会弯曲。我想要实现的是对地面的鸟类俯冲效果,然后在空中飞回来。
答案 0 :(得分:0)
你可以使用NSTimer
来定期调用你的方法来逐步移动鸟(你的动画图像)。
一些示例代码,用于沿抛物线弧移动对象:
// Assumptions: We have the variable
// UIView* bird <-- to be moved
// parabolically along the path y = x^2,
// up to translation (that is, slid over so the bottom
// point is not (0,0), but something in the view).
// Suppose bird starts out at (-3, 9) here.
- (void) oneBirdStep {
static const flost ddy = 2;
static float dy = -5; // Start out at 2*x0 + 1.
CGFloat birdY = bird.frame.origin.y + dy;
dy += ddy;
bird.frame = CGRectMake(bird.frame.origin.x + 1, birdY,
bird.frame.size.width, bird.frame.size.height);
}
如果你想要很多动画,你也可以考虑使用OpenGL,或者编写一个自定义的UIView
子类来覆盖drawRect:
方法,这可能会比上面的代码更有效率)。