积木

No sub title

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

好久没有写博客了。这里记录一点关于ccLayer的触摸处理的记录,怕将来忘记。
要使用ccLayer,必要要处理它的触摸响应。否则就少了必要的交互。
关于ccLayer的触摸有两种类型。
1) 单点触摸
2) 多点触摸
下面分别总结一下:
1) 单点触摸
要使用单点触摸,必须要重写以下几个接口:
 virtual void onEnter();//必须
 virtual void onExit();//必须
 virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);//必须
 virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);//可选,但一般情况下要
 virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);//可选,但一般情况下要
 virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);//可选
a) onEnter();接口。在此接口中,需要调用父类的该接口,并且最重要的,要为当前对象注册一个触摸委托(即:代理)。参考如下代码:
 CCLayer::onEnter();
 CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, true);
b) onExit();接口。在此接口中,需要将在onEnter()中注册的当前对象的触摸委托给移除掉。然后调用父类的onExit();。参考代码如下:
 CCTouchDispatcher::sharedDispatcher()->removeDelegate(this);
 CCLayer::onExit();
c) ccTouchBegan();该接口,细心的人可能会发现,就它是返回bool的。它的返回值决定着,后续的ccTouchMoved();ccTouchEnded();ccTouchCancelled();是否触发。只有返回true时才触发。
关于ccTouchBegan();ccTouchMoved();ccTouchEnded();ccTouchCancelled();的作用,在此我就不多说了。看名字我想就应该能清楚。

2) 多点触摸
要使用多点触摸。则只需要实现重写如下几个接口,即可:
 virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);
 virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);
 virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);
它们的作用我也不多说。下面简要介绍下CCSet*对象。它存储着所有的触摸信息。即:遍历它,可以处理所有的触摸点响应。其他的用法同单点触摸一样。
注意:用多点触摸时,不需要注册上面第 1) 点中的a)与b)小点的信息。(如果我没记错的话,处理了,可能会让程序蹦掉。)
posted on 2012-04-11 12:08 Jacc.Kim 阅读(5666) 评论(0)  编辑 收藏 引用 所属分类: cocos2d

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理