Objective c 禁用ccTouche
我正在我的图层中设置触摸启用:Objective c 禁用ccTouche,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,我正在我的图层中设置触摸启用: [[[CCDirector sharedDirector]touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; 稍后,如果我想禁用触摸:self.isTouchEnabled=NO它不工作。 如果我尝试使用以下选项禁用它: [[[CCDirector sharedDirector]touchDispatcher] addTargetedDelegate:self pr
[[[CCDirector sharedDirector]touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
稍后,如果我想禁用触摸:self.isTouchEnabled=NO代码>它不工作。
如果我尝试使用以下选项禁用它:
[[[CCDirector sharedDirector]touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];
没关系,但是如果我用相同的语法再次启用它,我会崩溃,因为已经添加了代理
如何动态禁用和启用触摸
谢谢。如果它确实是一个CCLayer对象,只需使用isTouchEnabled即可。CCLayer对象将相应地添加/删除自身作为目标触摸代理。所以整个问题是“你说的“不工作”是什么意思?”。例如,如果您的层(禁用触摸)包含菜单,菜单仍将处于活动状态,并且它们具有非常高的触摸优先级,即响应触摸的不是层,而是其嵌入式菜单
直接来自CCLayer的代码(2.0版):
如您所见,基本的CCLayer代码已经实现了您试图手动完成的任务。只要使用该属性 cc touch dispatcher和self.istouchenabled是检测触摸的两种独立方法。我现在不在电脑前,我记不起确切的密码。我将要搭乘国际航班,所以如果您愿意等一天左右,我将用正确的方法更新此消息,以删除cctouch调度员。如果您不想等待,我建议您查看cocos2d文档。我敢肯定它显示了你在那里self.istouchsenabled=NO;对于任何不工作的CCNode子类strange,当您不想处理它时,是否只想添加标志并忽略触摸?对触摸的响应意味着调用函数cctouch。是的,我有菜单和卷轴。。但我不必在cctouch功能中看到他们对触摸的响应。。(??)它们是一体的。见上文。
-(void) setIsTouchEnabled:(BOOL)enabled
{
if( isTouchEnabled_ != enabled ) {
isTouchEnabled_ = enabled;
if( isRunning_ ) {
if( enabled )
[self registerWithTouchDispatcher];
else {
CCDirector *director = [CCDirector sharedDirector];
[[director touchDispatcher] removeDelegate:self];
}
}
}
}
-(void) registerWithTouchDispatcher
{
CCDirector *director = [CCDirector sharedDirector];
[[director touchDispatcher] addStandardDelegate:self priority:0];
}