Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为场景中的标签设置动画?_Ios_Objective C_Sprite Kit_Uiviewanimation_Sklabelnode - Fatal编程技术网

Ios 为场景中的标签设置动画?

Ios 为场景中的标签设置动画?,ios,objective-c,sprite-kit,uiviewanimation,sklabelnode,Ios,Objective C,Sprite Kit,Uiviewanimation,Sklabelnode,如何设置场景中SKLabel位置的动画 我尝试了以下方法,但似乎不起作用: [SKView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{

如何设置场景中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){}];

在viewDidLoad中,它从以下位置开始:

newBestLabel.position = CGPointMake(CGRectGetMinX(self.frame)+70, CGRectGetMaxY(self.frame)+30);

这里出了什么问题?

SKLabelNode
没有继承自
UIView
,这不是在SpriteKit中处理动画的方法。相反,您应该通过创建并将其应用于节点来处理此问题:

SKLabelNode *label = [SKLabelNode labelNodeWithFontNamed:@"Avenir"];
label.position = CGPointMake(30, 200);
label.text = @"Lorem Ipsum";
[self addChild:label];

SKAction *moveLabel = [SKAction moveByX:100 y:0 duration:2.0];
[label runAction:moveLabel];
与代码中的坐标不一样,但我相信您可以从这里获取坐标。
还有一个移动目标:如果这更符合您的需求,请采取行动

SKLabelNode
不是从
UIView
继承的,这不是在SpriteKit中处理动画的方法。相反,您应该通过创建并将其应用于节点来处理此问题:

SKLabelNode *label = [SKLabelNode labelNodeWithFontNamed:@"Avenir"];
label.position = CGPointMake(30, 200);
label.text = @"Lorem Ipsum";
[self addChild:label];

SKAction *moveLabel = [SKAction moveByX:100 y:0 duration:2.0];
[label runAction:moveLabel];
与代码中的坐标不一样,但我相信您可以从这里获取坐标。
还有一个移动目标:如果这更符合您的需求,请采取行动

因为SKLabelNodeSKNode的子类,所以您可以使用名为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值将向上移动


有很多方法可以满足您的需要,还有很多其他方法,可以在

中找到,因为SKLabelNodeSKNode的子类。您可以使用名为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值将向上移动


有很多方法可以满足您的需要,还有很多其他方法,可以在

精彩的解释中找到,这正是我想要的!很好的解释,正是我想要的!