touchesEnded中的SKSpriteNode removeFromParent

时间:2014-05-29 21:46:07

标签: sprite-kit touches skspritenode

当在该SKSpriteNode上检测到触摸时,我在从其父级中删除SKSpriteNode时遇到问题。这是代码:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UITouch *touch in touches) {

        CGPoint sceneLocation = [touch locationInNode:self];
        if ([_tableDoneButton containsPoint:sceneLocation]) {
            NSLog(@"here");
            [self removeItemsFromView];
            _headerNode.portLabel.text = [IPGameManager sharedGameData].world.player.port.name;
            [_portNode show];
        }

        SKNode *nodeInPort = [_portNode nodeAtPoint:[touch locationInNode:_portNode]];
        if ([nodeInPort.name isEqualToString:@"marketButton"]) {
            [self showMarket];
        }
    }
} 

showMarket功能中,添加了'完成'SKSpriteNode,以便用户可以在他/她想要的时候离开市场。如上所示,如果_tableDoneButton包含触摸位置,则应调用包含removeItemsFromView的{​​{1}}函数。以这种方式删除节点时,我是否需要做一些特别的事情?

另一个问题:它似乎在1秒后被删除。运行[_tableDoneButton removeFromParent];时会发生什么?如果我在调用[node removeFromParent]后将SKSpriteNode设置为nil,则可以正常工作。但我不应该这样做吗?

0 个答案:

没有答案