[cocos2d] 谁摸了我一下----触摸事件处理

1. 设置接受触摸事件,可在init方法里面写上

[self setTouchEnabled: YES];

 旧版为self.isTouchEnabled = YES;

xcode会报Deprecations ‘setIsTouchEnabled:’ is deprecated waring

2. 覆盖方法

- (void) registerWithTouchDispatcher{
[[[CCDirector shareDirector] touchDispatcher] addTargetedDelegate:self priority:INT32_MIN+1 swallowsTouches:YES];
}

 

3. 捕获触摸

-(BOOL)ccTouchBegan:(UITouch *)touches withEvent:(UIEvent *)event{
//触摸开始时候做什么
}

-(void)ccTouchMoved:(UITouch *)touches withEvent:(UIEvent *)event{

}

-(void)ccTouchEnded:(UITouch *)touches withEvent:(UIEvent *)event{
//触摸结束时候做什么
}


4. 获取触摸位置

-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
//获得触摸坐标(iphone UI)
CGPoint touchLocation = [touch locationInView:[touch view]];

//将坐标转变成openGL的格式
touchLocation = [[CCDirector shareDirector]converToGL:touchLocation;

/*
*PS:iphone的坐标原点是左上角,x往右增加,y往下增加
*openGL的坐标原点是左下角,x往右增加,y往上增加
*/

//获得sprite,spriteTag在前面enum结构中定义,以区别不同的tag。所以下面需要判断其是否为CCSprite类,以防判断错误
CCNode *node = [self getChildByTag:spriteTag]; //判断是否为CCSprite类!!! NSAssert([node isKindOfClass:[[CCSpite class]], @"not a sprite"); //类型转换 CCSprite *sprite = (CCSprite*)node; //判断触摸位置是否为sprite BOOL isTouchSprite = CGRectContainsPoint([sprite boundingBox], touchLocation); if (isTouchSprite){ //do sth } //若触摸到sprite则把触摸事件吞了(=,= 即其它CCLayer不再响应该触摸事件) return isTouchSprite; }

先写到这里,遇到其他再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值