作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Cocos 2d-iphone 3.0.我正在使用此代码来检测是否触摸了单个 Sprite
-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint location = [touch locationInView: [touch view]];
CGPoint convertedlocation = [[CCDirector sharedDirector] convertToGL: location];
CGPoint convertedNodeSpacePoint = [self convertToNodeSpace:convertedlocation];
if (CGRectContainsPoint([_sprite boundingBox],convertedNodeSpacePoint))
{
// Remove sprite
}
}
我里面有一些代码应该从父级中删除一些其他 Sprite 。从逻辑上讲,当 _sprite
第二次被触摸,应用程序会崩溃,因为其他 Sprite 已经被移除。
我试图使用 _sprite.userInteractionEnabled = NO;
使 _sprite
不可触摸,但这没有效果。
userInteractionEnabled
到底是什么意思,如何使用它来促进 Sprite 上的触摸检测。
在我的场景中处理 Sprite 触摸的最佳方式是什么?
最佳答案
无法禁用 ccsprite 上的交互。你应该做的是:
bool firstTimeClicked=false;
-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
if(firstTimeClicked==true)
{
return NO;
}
CGPoint location = [touch locationInView: [touch view]];
CGPoint convertedlocation = [[CCDirector sharedDirector] convertToGL: location];
CGPoint convertedNodeSpacePoint = [self convertToNodeSpace:convertedlocation];
if (CGRectContainsPoint([_sprite boundingBox],convertedNodeSpacePoint)) {
firstTimeClicked=true;
}
}
关于ios - userInteractionEnabled = NO 是什么意思,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23054632/
我是一名优秀的程序员,十分优秀!