当在该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,则可以正常工作。但我不应该这样做吗?