我在目标c / cocos2d工作。我有一个名为AllLevelAndModes
的场景,我添加了一个类型为levelScroll
的名为EasyLevelSelectScene
的CCScrollView。在这个级别的滚动条上,我有一堆按钮用于我的游戏关卡。当有人触摸其中一个按钮时,会出现一个弹出窗口,显示有关该级别的一些统计信息。我点击按钮时,通过添加childing到EasyLevelSelectScene
来添加此弹出窗口。这个孩子属于LevelSelectDropdown
类。我想创建一个功能,如果用户点击弹出窗口(小于整个屏幕),弹出窗口就会消失。
现在我想我可以获得弹出窗口和屏幕的大小,如果用户点击x和y的某个范围之外,弹出窗口就会消失。但这有点麻烦。有一个更好的方法吗?一旦弹出窗口出现,我试图通过运行以下代码来获取该类的名称。
-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint touchLocationTemp = [[CCDirector sharedDirector] convertToGL: [touch locationInView:touch.view]];
CCResponderManager *responder = [[CCDirector sharedDirector] responderManager];
CCNode *node = [responder nodeAtPoint:touchLocationTemp];
CCLOG(@"class type %@", node); //Always reads 'EasyLevelSelectScene' no matter where I tap
if([node isKindOfClass:[EasyLevelSelectScene class]]) {
//go back to level select screen
}
}
不幸的是,这不起作用,因为无论我在哪里点击日志EasyLevelSelectScene
,即使我点击我的弹出窗口!为什么这样做,有没有办法获得最顶级孩子的班级名称?谢谢你的帮助!