我尝试使用SKSpriteNode作为从一个场景到下一个场景的过渡。我怎么能这样做?
[编辑]请注意,这适用于OSX而非iOS。 iOS的touchesBegan方法在OSX中似乎不起作用。
答案 0 :(得分:5)
好的,这是OSX的解决方案。
您必须首先初始化场景(自身对象),以便监视点击次数。
self.userInteractionEnabled = YES; //do this somewhere in initialization
在mouseDown事件处理程序中,检查是否触摸了一个节点(在本例中是一个特定的SKSpriteNode)。
-(void)mouseDown:(NSEvent *)theEvent {
CGPoint location = [theEvent locationInNode:self]; //get location of touch
SKSpriteNode *spriteTouched = (SKSpriteNode*)[self nodeAtPoint:location]; //get a node if touched at that location
//DO SOMETHING WITH THE NODE
...
}
答案 1 :(得分:2)
首先,您需要为节点设置名称。 node.name = @"node's name";
然后在touchesBegan方法中添加:
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
if([[self nodeAtPoint:location].name isEqualToString:@"node's name"]){
//present scene code here
}
}
答案 2 :(得分:0)
试试这个,它为我工作
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
for (UITouch *aTouch in touches) {
if (aTouch.tapCount >= 1) {
// The view responds to the tap
// do something here...
}
}