我正在使用spritekit框架构建一个iOS应用程序,我试图让屏幕在用户点击"开始"按钮时过渡到下一个场景。我能够让屏幕过渡,并加载下一个场景,但它发生时,用户点击屏幕上的任何地方。我只希望这发生在用户点击"开始"按钮时。我使用SKSpriteNode创建了开始按钮,并使用name属性将其命名为startButton。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
SKAction *doNothing = [SKAction moveByX:0 y:0 duration:0];
if (startButton != nil)
{
[startButton runAction:doNothing completion:^{
SKScene *gamescene = [[GameScene alloc] initWithSize:self.size];
SKTransition *transition = [SKTransition doorsCloseHorizontalWithDuration:0.0];
[self.view presentScene:gamescene transition:transition];
}];
}
}
谢谢!
代替
if(startButton != nil){ }
尝试在touchesBegan方法中使用这个
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
if([node.name isEqualTo:@"startButton"]){
//start scene
}
确保你像这样设置开始按钮的名称(标签或精灵)
start.name = @"startButton";
编辑:不使用
[startButton runAction:doNothing completion:^{
....
}
直接转换
if([node.name isEqualTo:@"startButton"]){
SKScene *gamescene = [[GameScene alloc] initWithSize:self.size];
SKTransition *transition = [SKTransition doorsCloseHorizontalWithDuration:0.0];
[self.view presentScene:gamescene transition:transition];
}