0

让我们看下面的代码:

    CCTintTo *tint1 = [CCTintTo actionWithDuration:4 red:255 green:0 blue:0];
    CCTintTo *tint2 = [CCTintTo actionWithDuration:4 red:0 green:0 blue:255];
    CCTintTo *tint3 = [CCTintTo actionWithDuration:4 red:0 green:255 blue:0];
    CCSequence *sequence = [CCSequence actions:tint1, tint2, tint3, nil];
    CCRepeatForever *repeat = [CCRepeatForever actionWithAction:sequence];
    CCSpeed *speedAction = [CCSpeed actionWithAction:repeat speed:10];

如您所见,前三个动作是在 4 秒内分别着色为红色、蓝色和绿色的动作。然后,这些动作的顺序被传递给速度为 10 的 CCSpeed 动作。现在我完全不明白这些持续时间是如何工作的?我的意思是,前三个应该在 4 秒内完成,但速度方法很快,不会让它们持续那么久。在这种情况下,就行动的持续时间而言,我应该注意什么原则?

4

1 回答 1

0

据我所知,CCSpeed 动作只是改变了其中 CCActionInterval 的整个时间。这意味着,如果您的序列的持续时间是 12 秒,通过将此序列传递给速度为 10 的 CCSpeed 动作,此序列的持续时间将从 12 秒增加到 120 秒。

另一点是CCSpeed动作在actionWithAction:speed:方法中等待CCActionInterval子类。因此,您不能将 CCRepeatForever 操作传递给它。如果你想永远重复这个动作,你应该打电话给

CCSequence *sequence = [CCSequence actions:tint1, tint2, tint3, nil];
CCSpeed* speedAction = [CCSpeed actionWithAction:sequence speed:10];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:speedAction];
于 2012-06-19T21:23:46.763 回答