Cocos2dx 里如何判读鼠标点击了哪个精灵?

h_h_w 2014-04-26 05:34:23
1.在3d里一般会有射线检测,当鼠标点击的时候能找到点击了哪个物体,在cocos2dx里如何判断?
2.或者如和让ccSprite相应鼠标的点击?找到的方法都是在layer里放一个sprite,然后根据点击的位置依次检测每个sprite。不能继承sprite让其自主响应么?像按钮那样响应鼠标消息
...全文
2524 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
h_h_w 2014-10-12
  • 打赏
  • 举报
回复
引用 4 楼 mendick2000 的回复:
获取Tag的思路不错。 我自己在想一个问题,从面向对象来说,可以让每个精灵都独立响应鼠标事件或者触屏事件,然后各自处理各自的。
每个做成一个layer吧。。
安全飞天狗 2014-09-26
  • 打赏
  • 举报
回复
获取Tag的思路不错。 我自己在想一个问题,从面向对象来说,可以让每个精灵都独立响应鼠标事件或者触屏事件,然后各自处理各自的。
WandingPace 2014-07-22
  • 打赏
  • 举报
回复
引用 2 楼 u014486706 的回复:
设置精灵的tag属性,然后从回调函数中获取该属性就可以了! 例如: for(int i = 0; i < 10; ++i) { CCMenuItemImage* room = CCMenuItemImage::create("room.png", "room.png", this, menu_selector(Room::enterRoom)); room->setPosition(ccp(100* i, 200)); room->setTag(i); CCMenu* selectRoom = CCMenu::create(room, NULL); selectRoom->setPosition(CCPointZero); this->addChild(selectRoom); } void Room::enterRoom(CCObject* pSender) { int roomId = (CCMenuItemImage*)pSender->getTag(); CCLOG("roomId = %d", roomId); }
错误提示 object类型没有getTag(); 好像那边的强制转换 (CCMenuItemImage*) 转换不了
bnnswyp 2014-06-04
  • 打赏
  • 举报
回复
设置精灵的tag属性,然后从回调函数中获取该属性就可以了! 例如: for(int i = 0; i < 10; ++i) { CCMenuItemImage* room = CCMenuItemImage::create("room.png", "room.png", this, menu_selector(Room::enterRoom)); room->setPosition(ccp(100* i, 200)); room->setTag(i); CCMenu* selectRoom = CCMenu::create(room, NULL); selectRoom->setPosition(CCPointZero); this->addChild(selectRoom); } void Room::enterRoom(CCObject* pSender) { int roomId = (CCMenuItemImage*)pSender->getTag(); CCLOG("roomId = %d", roomId); }
  • 打赏
  • 举报
回复
我也在纠结这个问题啊,帮楼主顶上 顺便说下我找到的方法: 1.遍历精灵看点击点是否在精灵内部 2.通过点击点算出tag,再通过tag得到精灵 3.创建一个类继承CCSprite和CCTargetedTouchDelegate,可以实现你说的效果。但是这种方法我尝试过但是失败了。。。楼主有兴趣可以百度下,如果成功了还望告知下。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧