OStack程序员社区-中国程序员成长平台

标题: ios - userInteractionEnabled = NO 是什么意思,它是如何工作的? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 21:30
标题: ios - userInteractionEnabled = NO 是什么意思,它是如何工作的?

Cocos 2d-iphone 3.0。我正在使用此代码来检测是否触摸了单个 Sprite

-(void) touchBeganUITouch *)touch withEventUIEvent *)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 触摸的最佳方式是什么?



Best Answer-推荐答案


没有办法禁用 ccsprite 上的交互。你应该做的是:

bool firstTimeClicked=false;

-(void) touchBeganUITouch *)touch withEventUIEvent *)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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4