0

CCSprite我使用以下代码在 iOS 设备的屏幕上移动一个简单的:

[self schedule:@selector(update:) interval:0.0167];

- (void) update:(ccTime) delta {
    CGPoint currPos = self.position;
    currPos.x += xVelocity;
    currPos.y += yVelocity;

    self.position = currPos;
}

这可行,但是动画并不流畅。如何提高动画的流畅度?

CCSprite我的场景非常简单(只有一个带有背景图像的全屏和一个相对较小CCSprite的缓慢移动的场景)。

我已经记录了 ccTime 增量,但它并不一致(它几乎总是大于我指定的 0.0167 间隔......有时高达 4 倍)。

我已经考虑将更新方法中的运动调整为增量时间(较大的增量 => 较大的运动等)。然而,鉴于我的场景的简单性,似乎有更好的方法(而且我可能缺少一些基本的方法)。

4

2 回答 2

2

调度程序将尝试根据您的间隔来适应和调用您的选择器,但如果有其他进程正在运行,它可能会更早或更晚(因此会出现不一致的原因)。

相反,将您的 xVelocity 和 yVelocity 乘以 delta - 这应该将速度缩放为更平滑的运动。

例如:

- (void) update:(ccTime) delta {
    CGPoint currPos = self.position;
    currPos.x += (xVelocity * delta);
    currPos.y += (yVelocity * delta);

    self.position = currPos;
}
于 2011-11-21T23:14:12.810 回答
1

尝试使用默认[self scheduleUpdate]方法,而不是像你一样直接调用它,看看这是否会有所不同。此方法专为您正在做的事情而设计,可能会更顺畅。

于 2011-11-22T01:41:51.563 回答