是否可以在两个场景中使用固定的SKSpriteNode?

时间:2014-04-07 02:18:20

标签: ios objective-c sprite-kit

是否可以在固定位置拥有一个基本位于场景之上的SKSpriteNode?几乎就像你在HTML文档中拥有固定位置的方式一样。即使场景发生变化,我希望SKSpriteNode保持在同一位置,但我不确定它是否可能。

这是SKSpriteNode的代码:

    SKSpriteNode *kitty = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"Kitty.png"] size:CGSizeMake(82.6, 146.4)];
    kitty.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
    kitty.zPosition = 1.0;

    [self addChild:kitty];

当我转换到下一个屏幕时,我希望它保持在屏幕中间。这是第二个屏幕的转换:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];

    if ([node.name isEqualToString:@"play"]) {

        scene1 *subMenu = [[scene1 alloc] initWithSize:self.size];
        [self.view presentScene:subMenu transition:[SKTransition pushWithDirection:SKTransitionDirectionUp duration:2.0]];
    }

}

我可以做我想做的事吗?如果没有,请告诉我,让我有时间继续搜索。

1 个答案:

答案 0 :(得分:1)

没有。所有节点只属于一个场景。如果你关闭场景,它的所有节点也将被解散。您可以考虑使用所选图像,因为您关闭旧场景并使用相同图像开始新场景。

如果您使用fadeWithDuration:并将时间间隔设置为几乎为零,则可能只会在图像中显示为非常快的闪烁。当然,您的下一个场景可以在开始时准备好显示相同的图像。