您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d中,我们让CCSprite也可以接受触摸。

2010-11-15 15:44 162 查看
cocos2d中,layer的主要任务就是接受用户的触摸,在看本文之前,读者最好了解ios与用户交互的方式,最好也知道cocos2d中

是怎么相应用户的触摸到各个layer的。

首先我们继承自标准CCSprite,并且遵循CCTargetedTouchDeleget或者CCStandadTouchDeleget

//
//  TestSprite.h
//  touchTest
//
//  Created by jeffrey on 10-11-12.
//  Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface TestSprite : CCSprite<CCTargetedTouchDelegate>
{
}
@end


//
//  TestSprite.m
//  touchTest
//
//  Created by jeffrey on 10-11-12.
//  Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import "TestSprite.h"
@implementation TestSprite
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
if ( ![self containsTouchLocation:touch] )
{
return NO;
}
CGPoint pooint =   [self convertTouchToNodeSpaceAR:touch];
return YES;
}
- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint touchPoint = [touch locationInView:[touch view]];

touchPoint = [[CCDirector sharedDirector] convertToUI:CGPointMake(touchPoint.x, touchPoint.y)];

self.position = CGPointMake(touchPoint.x, touchPoint.y);
}
- (void) onEnter
{
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
[super onEnter];
}
- (void) onExit
{
[[CCTouchDispatcher sharedDispatcher]    addTargetedDelegate:self priority:0 swallowsTouches:YES];
[super onExit];
}
- (CGRect)rect
{
CGSize s = [self.texture contentSize];
return CGRectMake(-s.width / 2, -s.height / 2, s.width, s.height);
}
- (BOOL)containsTouchLocation:(UITouch *)touch
{
return CGRectContainsPoint(self.rect, [self convertTouchToNodeSpaceAR:touch]);
}
@end


这样我们自己的CCSprite就可以接受触摸了。

rect这个函数,是我们讲sprite自己的坐标映射到自己的坐标系中,

containsTouchLocation:这个函数就看看我们的触摸点是否在sprite中。

CGPoint pooint = [self convertTouchToNodeSpaceAR:touch];

这个就是将相对于layer的touch转化为sprite,然后得出相对与sprite本身的坐标。

这样我就能根据触摸sprite的不同位置,对sprite进行不同的控制。

OnEnter是继承自CCSprite的函数,主要作用是把自己注册到相应链中去,

这样精灵级别就可以接受触摸了。

相反,OnExit是注销的意思。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐