我正在使用cocos2d在iPhone上开发游戏。我有一个包含20个CCSprite的CClayer。我正在播放声音,我想在播放声音时禁用所有CCSprite或整个图层上的触摸事件。我查看了CCLayer的名为isTouchEnabled的属性,但该行为不会传播给子节点(所有的CCSprite)。除非没有记录,否则似乎没有CCsprite的等效属性。有人知道一个简单的方法吗? 感谢在cocos2d禁用CCSprite或CCScene的用户交互Iphone
1
A
回答
1
另一个论坛的成员张贴了这个解决方案
因此,所有你的精灵正常接收触摸事件?如果您知道声音何时播放,您可以让他们检查声音,并在播放声音时忽略该声音。例如,如果你的精灵实现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;
}
2
我是个用下面的方法来对视图下面的层上禁用CCMenu项目的触摸可能会帮助你。
调用以下方法并禁用所有子菜单或子节点。
[self MenuStatus:NO Node:self]; //禁用
方法是:
-(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**
相关问题
- 1. iphone cocos2d CCSprite EXC_BAD_ACCESS
- 2. Trace a ccsprite cocos2d-iphone
- 3. CCSpriteFrameCache或CCSprite? - Cocos2d
- 4. 在Cocos2d-iPhone中继承CCSprite
- 5. iphone开发:在动画过程中禁用用户交互
- 6. 如何在CCLayer或CCScene中添加UITextView在cocos2d-iphone
- 7. 从C++ CCScene打开CCScene在cocos2d-x
- 8. 禁用TabBar上的用户交互
- 9. 如何禁用UIBarButtonItem的用户交互?
- 10. 禁用MPMoviePlayerController中的用户交互
- 11. Cocos2d-x CCSprite内存使用(释放CCSprite)
- 12. 禁用用户交互几秒钟android
- 13. 禁用UICollectionView单元格用户交互
- 14. Android contentView禁用用户交互?
- 15. monodroid Steema.TeeChart.TChart:如何禁用用户交互
- 16. Cocos2d CCScene&CCLayer设置
- 17. 如何歪斜Cocos2d iPhone中的CCSprite?
- 18. Cocos2d中的CCSprite
- 19. 禁用NSWindow交互
- 20. 在OpenLayers中禁用交互
- 21. 使用UIAccelerometer移动CCSprite - cocos2D
- 22. 的Cocos2D 2.0黑屏ccscene
- 23. 的cocos2d CCScene背景取向
- 24. 允许用户交互iPhone SDK?
- 25. 禁用Spannable中的交互
- 26. Cocos2D CCSprite问题?
- 27. 旋转CCSprite Cocos2D?
- 28. 复制CCSprite? (cocos2d)
- 29. cocos2d ccsprite动画
- 30. CCSprite旋转速度非常快使用UIRotationGestureRecognizer的Cocos2D-iPhone