【发布时间】:2013-12-22 21:08:19
【问题描述】:
我正在尝试做一个简单的自动反转动画。
SKAction *a = [SKAction moveToX:10 duration:0.5];
a = [SKAction repeatActionForever:a];
[car runAction:a];
但动作并没有逆转。如何获得类似 Core Animation 的自动反转效果?
【问题讨论】:
标签: ios iphone sprite-kit skaction
我正在尝试做一个简单的自动反转动画。
SKAction *a = [SKAction moveToX:10 duration:0.5];
a = [SKAction repeatActionForever:a];
[car runAction:a];
但动作并没有逆转。如何获得类似 Core Animation 的自动反转效果?
【问题讨论】:
标签: ios iphone sprite-kit skaction
Andrey Gordeev 的回答足够接近,
float x = car.position.x;
SKAction *a = [SKAction moveToX:(x+10) duration:0.5];
SKAction *b = [SKAction moveToX:x duration:0.5];
SKAction *seq = [SKAction sequence:@[a,b]];
[car runAction:[SKAction repeatActionForever:seq]];
moveToX:(x+10) 将使其摆动 10(而不是在点 X=10 处移动)。
【讨论】:
手动添加反向操作:
float x = car.position.x;
SKAction *a = [SKAction moveToX:10 duration:0.5];
SKAction *b = [SKAction moveToX:x duration:0.5];
SKAction *sequence = [SKAction sequence:@[a,b]];
[car runAction:[SKAction repeatActionForever:sequence]];
【讨论】:
repeatActionForever:方法会反转动作。
问题在于 moveToX: 操作不可逆
每个动作的 Apple 文档都会显示它是否可逆。
PS:moveByX:y:duration: 动作是可逆的
【讨论】: