在Iphone的cocos2d中禁用CCSprite或CCScene上的用户交互
我正在用cocos2d在Iphone上开发一个游戏。我有一个包含20个CCSprite的CClayer。我正在播放声音,我想在播放声音时禁用所有CCSprite或整个层上的触摸事件。我查看了名为isTouchEnabled的CCLayer属性,但该行为不会传播到子对象(所有CCSprite)。除非没有文档记录,否则CCsprite似乎没有等效的属性。有人知道一个简单的方法吗?在Iphone的cocos2d中禁用CCSprite或CCScene上的用户交互,iphone,objective-c,cocos2d-iphone,Iphone,Objective C,Cocos2d Iphone,我正在用cocos2d在Iphone上开发一个游戏。我有一个包含20个CCSprite的CClayer。我正在播放声音,我想在播放声音时禁用所有CCSprite或整个层上的触摸事件。我查看了名为isTouchEnabled的CCLayer属性,但该行为不会传播到子对象(所有CCSprite)。除非没有文档记录,否则CCsprite似乎没有等效的属性。有人知道一个简单的方法吗? 谢谢另一个论坛的成员发布了此解决方案 那么你所有的精灵通常都会收到触摸事件?如果你知道声音何时播放,你可以让他们检查一下
谢谢另一个论坛的成员发布了此解决方案 那么你所有的精灵通常都会收到触摸事件?如果你知道声音何时播放,你可以让他们检查一下,如果声音正在播放,就忽略触摸。例如,如果您的精灵实现了CCTargetedTouchDelegate协议,您可以执行以下操作:
- (BOOL)ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event {
if (soundIsPlaying) {
return NO; // i.e., the sprite is currently uninterested in the touch
}
// Other checks and behaviour here.
return YES;
}
使用下面的方法禁用视图下面层上的CCMenu项目可能会对您有所帮助 调用下面的方法并禁用所有子菜单或子节点。 [自菜单状态:无节点:自];//禁用 方法是:
-(void)MenuStatus:(BOOL)_enable Node:(id)_node
{
for (id result in ((CCNode *)_node).children)
{
if ([result isKindOfClass:[CCMenu class]])
{
for (id result1 in ((CCMenu *)result).children)
{
if ([result1 isKindOfClass:[CCMenuItem class]])
{
((CCMenuItem *)result1).isEnabled = _enable;
}
}
}
else
[self MenuStatus:_enable Node:result];
}
}
[self MenuStatus:YES Node:self]; // to enable**