Cocos2d中,我们让CCSprite也可以接受触摸。
来源:互联网 发布:校园网络平台建设计划 编辑:程序博客网 时间:2024/05/21 12:47
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是注销的意思。
- Cocos2d中,我们让CCSprite也可以接受触摸。
- Cocos2d中,我们让CCSprite也可以接受触摸。
- Cocos2D中CCSprite注意事项
- Cocos2d-x ccSprite的触摸消息响应 - ccsx教程
- Cocos2d-x中让CCSprite变灰(Gray)的简单办法
- Cocos2d-x中让CCSprite变灰(Gray)的简单办法
- 让一个精灵接受触摸事件
- cocos2d - CCSprite
- 我们也可以从这样的案件中,学会正视
- cocos2d-x 中CCScene CCLayer CCSprite CCNode
- Cocos2d中CCSprite与UIImage互相转换
- cocos2d-x中CCSprite更换图片
- cocos2d中CCSprite的使用总结
- Cocos2d中CCSprite与UIImage互相转换
- cocos2d中CCSprite的使用总结
- cocos2d中CCSprite的使用总结
- cocos2d-x 中CCScene CCLayer CCSprite CCNode
- cocos2d-x 中创建 CCSprite 精灵动画
- 用MySQL创建数据库和数据库表
- 浅谈管理系统操作日志设计(附操作日志类)
- 【windows8开发】Metro App生命周期之Suspended与Resume
- IT札记- 真实云世界的端倪
- 请写一个函数,实现类似的strcpy的字符串复制功能
- Cocos2d中,我们让CCSprite也可以接受触摸。
- 写接口的一些调式方法
- csdn 积分记录
- 学习笔记 Hadoop是什么?
- 虚拟主机为什么使用 CloudLinux 作为服务器系统?
- 接口
- 变态的C++函数指针
- Spring.NET学习笔记6——依赖注入(应用篇) Level 300
- UIDatePicker 日期、时间选取器