小for的Cocos2d-x学习笔记与感悟4之单击事件
来源:互联网 发布:三星ml2161清零软件 编辑:程序博客网 时间:2024/04/20 09:54
小for在前面已经记录了Cocos2d-x的环境搭建和基本控件的使用,也算是开始了Cocos2d-x的学习了吧。前面的控件只记录了6种,以后等对这个引擎更了解了后再做一些自定义的控件,如果效果不错的话就贡献上来。
正文开始,如题,今天(早上发的是昨天写的^-^)要记录的内容点击事件,这个单机事件不是针对某一个精灵的,而是整个屏幕上的点击监听,通过监听点击的坐标位置实现。
首先,我们需要在HelloWorld.h中的public添加声明
virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch,cocos2d::CCEvent *pEvent);
然后,在HelloWorld.cpp中定义
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,true);
最后,在HelloWorld.cpp中定义ccTouchBegan函数即可
bool HelloWorld::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent) {//得到被点击的位置,为什么这个位置的高度不正确?CCPoint point=pTouch->locationInView();//我的模拟器高度为320point.y=320-point.y;//在控制台打印点中的坐标位置CCLog("Where you clicked was (%f,%f).",point.x,point.y);//在点中的位置放一张图片,CCSpritemark=CCSprite::create("CloseNormal.png");mark->setPosition(point);this->addChild(mark);return true;}
调试—>启动新实力,小for在屏幕上随机地点了很多很多下,得到了下图的结果(满脸麻子的赶脚)
控制台打印的坐标点如下
基本上,这个东西的使用就这样完成了。
小for扩展下,检测一下一张图片是否被点中了,请看如下代码,其中注释写得很清楚了。(只修改ccTouchBegan函数,注意那几个全局变量)
bool HelloWorld::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent) {//得到被点击的位置,为什么这个位置的高度不正确?CCPoint point=pTouch->locationInView();//我的模拟器高度为320point.y=320-point.y;//在控制台打印点中的坐标位置CCLog("Where you clicked was (%f,%f).",point.x,point.y);float width=spriteClick->getContentSize().width;float height=spriteClick->getContentSize().height;float x=spriteClick->getPosition().x;float y=spriteClick->getPosition().y;if((point.x>=x&&point.x<=(x+width))&&(point.y>=y&&point.y<=y+height)){ //在这个矩形范围内 //点中的点在 图片矩形的(x,x+width)&&(y,y+height)之间,矩形范围内 //修改HelloWorld那几个字儿 this->removeChild(pLabel,true); pLabel = CCLabelTTF::create("Sprite was clicked", "Arial", 24); // Get window size and place the label upper. CCSize size = CCDirector::sharedDirector()->getWinSize(); pLabel->setPosition(ccp(size.width / 2, size.height - 50)); this->addChild(pLabel, 1); }else{ this->removeChild(pLabel,true); pLabel = CCLabelTTF::create("Sprite was not been clicked", "Arial", 24); // Get window size and place the label upper. CCSize size = CCDirector::sharedDirector()->getWinSize(); pLabel->setPosition(ccp(size.width / 2, size.height - 50)); // Add the label to HelloWorld layer as a child layer. this->addChild(pLabel, 1);}return true;}
同样地,也贴一张图让大家看看效果
正文结束,午休了…小for给大家说午安了~
刚才看到腾讯新闻说消息薛蛮z因为嫖娼被抓了,我以前还关注了他的呢,完全是正人君子的赶脚。这事儿我不好评论得,因为小for不懂这些事哈。我觉得他出来后会立即黑警察局,黑政府,黑中国人性,即使不黑,也会无尽的讽刺了,我们就静静的看吧,因为这样才“符合”他的微博名人身份嘛。已经有微博名人在为他辩护了:
微博某公知: 在中国嫖娼都抓,连做爱都没有自由,这要是在美国,警察局长,市长要在电视台上向被打扰做爱的市民公开道歉, 这, 就是差距。
近来,薄熙来也正在被庭审,其实,作为一个重庆人,他的功劳是显而易见的,政治斗争什么的不懂,反正这人是功过都有。祈祷他能好好活着,以上只是小for没过大脑的想法,大家一笑置之吧。
- 小for的Cocos2d-x学习笔记与感悟4之单击事件
- 小for的Cocos2d-x学习笔记与感悟5之拖动(Touch)事件
- 小for的Cocos2d-x学习笔记与感悟1之环境搭建
- 小for的Cocos2d-x学习笔记与感悟2之基本控件使用(1)
- 小for的Cocos2d-x学习笔记与感悟3之基本控件使用(2)
- 小for的Cocos2d-x学习笔记与感悟6之Action
- 小for的Cocos2d-x学习笔记与感悟7之界面刷新
- 小for的Cocos2d-x学习笔记与感悟8之场景切换和声音控制
- 小for的Cocos2d-x学习笔记与感悟9之俄罗斯方块(1)
- 小for的Cocos2d-x学习笔记与感悟10之俄罗斯方块(2)
- 小for的Cocos2d-x学习笔记与感悟11之文件保存和中文显示
- 小for的Cocos2d-x学习笔记与感悟12之SQLite数据库
- 小for的Cocos2d-x学习笔记与感悟13之从新建项目到打包成APK(Cocos2d-x 2.2.1)
- cocos2d-x学习笔记之cocos2d-x的安装与helloworld测试
- Cocos2d-x游戏开发之单击事件_锁定触摸区域外的界面
- Cocos2d-x游戏开发之单击事件_锁定触摸区域外的界面
- 【Cocos2d-x学习笔记】之响应触屏事件
- cocos2d-x-3.0学习笔记之用户事件机制
- C#验证Email是否真正存在
- IOS 多线程 RUNLOOP 机制 (三)
- C语言位运算详解
- FusionChart中引入图类型和数据源方法
- Ubuntu 13.04 android编译环境配置
- 小for的Cocos2d-x学习笔记与感悟4之单击事件
- Marklogic search development -2.1Understanding the Search API
- 关于禁用触摸屏右键的方法
- 黑马程序员-java学习之排序算法
- 汇编不能被C语言取代
- 编程基础-----田忌赛马
- c#窗口句柄
- Marklogic search development -2.2Controlling the Search With the Options Node
- 【RSLogix5000】—(2.1)—RSLogix5000常用指令介绍——原理