我使用以下代码在iOS设备的屏幕上移动一个简单的CCSprite
:
[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 delta并且它不一致(它几乎总是大于我指定的0.0167的间隔...有时高达4倍)。
我已经考虑将更新方法中的运动定制为增量时间(更大的delta =>更大的运动等)。然而,鉴于我的场景简单,似乎有一种更好的方法(以及我可能遗漏的基本内容)。
答案 0 :(得分:2)
调度程序将尝试按照您的间隔调整并调用您的选择器,但如果有其他进程正在运行,则可以更早或更晚(因此不一致)。
相反,将xVelocity和yVelocity乘以delta - 这应该将速度缩放为更平滑的运动。
例如:
- (void) update:(ccTime) delta {
CGPoint currPos = self.position;
currPos.x += (xVelocity * delta);
currPos.y += (yVelocity * delta);
self.position = currPos;
}
答案 1 :(得分:1)
尝试使用默认的[self scheduleUpdate]
方法而不是直接调用它,看看是否有所作为。此方法专为您正在进行的操作而设计,可能更顺畅。