如何在场景中为SKLabel的位置设置动画?
我已经尝试了以下方法,但似乎无法正常工作:
[SKView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
newBestLabel.position = CGPointMake(CGRectGetMinX(self.frame)+70, CGRectGetMaxY(self.frame)-30);
}
completion:^(BOOL finished){}];
和
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
newBestLabel.position = CGPointMake(CGRectGetMinX(self.frame)+70, CGRectGetMaxY(self.frame)-30);
}
completion:^(BOOL finished){}];
在viewDidLoad中,它开始于:
newBestLabel.position = CGPointMake(CGRectGetMinX(self.frame)+70, CGRectGetMaxY(self.frame)+30);
怎么了
最佳答案
由于SKLabelNode是SKNode的子类,因此您可以使用名为runAction:的方法,并传入执行所需功能的SKAction。
// create an instance of SKAction
SKAction *moveLabel = [SKAction moveByX:0.0 y:30.0 duration:1.2];
// tell labelNode to run the action
[newBestLabel runAction:moveLabel];
还值得注意的是SpriteKit使用的坐标系不同于UIKit。因此,在上面的代码中,正的x值将向右移动,而正的y值将向上移动!
SKAction Class Reference中提供了许多方法来满足您的需求,并且还有更多其他方法。