cocos2d ccLayer响应触摸事件方法

查看官方文档可知,cocos2d支持两种不同的处理触摸事件的方法

分别为:standard touch delegate 和 Targeted touch delegate

1、standard touch delegate

1.1定义

@protocol CCStandardTouchDelegate <NSObject>
@optional
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
@end

1.2使用

在cclayer子类中加入::即可触发事件。

self.isTouchEnabled = YES;

2、Targeted touch delegate

2.1定义

@protocol CCTargetedTouchDelegate <NSObject>
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event;
@optional
// touch updates:
- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event;
@end

2.2使用

- (void)onEnter
{
	[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
	[super onEnter];
}
- (void)onExit
{
   [[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
     [super onExit];
}
另外ccTouchBegan是必须实现的,而且当返回TRUE的时候触发其他事件。

但是官方的说法是cclayer子类必须重写registerWithTouchDispatcher,我这种方法是在非cclayer中实现响应才会用到的,但我自己测试并不可行,不知到是不是文档太旧了,还是如何。

posted @ 2011-04-29 16:24  jeekun  阅读(2891)  评论(0编辑  收藏  举报