今天,继续完善自己的小DEMO,要加入一些虚拟按键,首先是,上下左右方向键。

这里需要实现,按下持续走,松开则停止的效果。

尝试着用CCMenuImage做,可惜CCMenuImage只支持按下再弹起后,的事件处理。无法对按下到抬起之间的这段时间进行控制。

UIButton刚好可以满足这个需求。

UIButton是cocos2dx扩展里的UI控件类, 派生自Widget。

使用方法和CCMenuImage类似, 每个UI控件必须放在一个UILayer中,也就是说,UILayer就是UI控件的容器了。

创建的话类似下面:

 Button *m_pUpBtn = Button::create();m_pUpBtn->setTouchEnabled( true );m_pUpBtn->loadTextures( "DirKeyNor.png", "DirKeySel.png", "" );m_pUpBtn->setPosition( ccp( 180.0f, 160.0f + m_pUpBtn->getContentSize().height/2 ) );m_pUpBtn->addTouchEventListener( this, toucheventselector( DirPanel::OnDirUp ) );uiLayer->addWidget( m_pUpBtn );

顺带一提,其实UIButton这个类并不存在。

typedef cocos2d::ui::Button UIButton;

其实它是源自typedef而已,真正的控件类是Button。

有了Button之后,我们只需要创建四个Button控件,然后加入到UILayer中,当然,UILayer也许要加入到节点当中。然后为每个按钮添加一个触摸的响应事件即可。

形式类似这样:

void DirPanel::OnDirUp( cocos2d::CCObject *obj, cocos2d::ui::TouchEventType type )
{switch ( type ){case TOUCH_EVENT_BEGAN:{m_pHero->setDir( DIR_UP );}break;case TOUCH_EVENT_ENDED:{m_pHero->setDir( DIR_NONE );}break;}
}

有了以上这些,虚拟按键就手到擒来了,当然,为了配合虚拟按键需要对应的控制人物移动的接口。

至此,虚拟按键就有着落啦。

效果图如图:

cocos2dx -- 学习笔记 利用UIButton制作虚拟按键相关推荐

  1. cocos2d-x学习笔记15:cocos2d-x教程资源总结

    注:cocos2d可作为cocos2dx的参考,两者接口很相似. 名称:知易的<知易Cocos2D-iPhone开发教程> 官方地址:http://blog.sina.com.cn/s/a ...

  2. cocos2d-x学习笔记16:记录存储1:CCUserDefault

    cocos2d-x学习笔记16:记录存储1:CCUserDefault 一.简述 CCUserDefalt作为NSUserDefalt类的cocos2d-x实现版本,承担了cocos2d-x引擎的记录 ...

  3. sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

    sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之 ...

  4. cocos2d-x 学习笔记(2)cocos2d-x重要概念,项目结构及 CCDirector 导演控件

    cocos2d-x 学习笔记(2)cocos2d-x重要概念及项目结构 在cocos2d引擎中,有几个概念,分别是导演,场景,布景和人物角色. 导演(CCDirector)在cocos2d-x引擎中, ...

  5. cocos2d-x 学习笔记(1)关于cocos2d-x(环境配置,项目结构,文件说明)

    cocos2d-x 学习笔记(1)关于cocos2d-x(环境配置,项目结构,文件说明) 1.问:什么是cocos2d-x? 是一套开放源代码,主要基于c,c++语言,针对windows,linux, ...

  6. Unity制作虚拟按键输入数字答案

    Unity制作虚拟按键输入数字答案 1.层级结构 GameScene是Panel,其实就是一张灰白色的背景:1level-1就是灰色的背景:Text就是题目:InputField是输入框:input是 ...

  7. FPGA学习笔记---利用连续赋值语句延时功能实现按键消抖

    最近一直在学习FPGA,今天在学习延时语句时,发现了连续赋值的一个特点.在连续赋值语句中添加延时时,任何小于延迟值的输入变化都会被滤除而不会体现在输出上.比如  #10 B = A; 当A的变化小于1 ...

  8. 【cocos2dx学习笔记】制作Loding场景

    为什么要制作loading场景? 在实际游戏中会有一个场景中拥有大量的资源,直接跳转会造成卡顿,而且在场景跳转的过程中会存在一个时间段,在这个时间段中跳转前的场景和将要跳转到的场景都占用着系统资源,会 ...

  9. cocos2d-x学习笔记(持续更新)

    接受触屏事件的优先级是值越小,响应触屏事件的优先级越高 Z值越大,越外面 粒子系统设计工具:Particle Designer软件  目前只支持MAC平台 导出 plist文件 地图设计工具:Tile ...

最新文章

  1. mysql client 5.1.34_mysql最新版
  2. 【onethink1.0】HTML模板获取前台和后台当前登录用户名
  3. zzfrom水木-Linux环境学习和开发心得(作者:lunker)
  4. copy与mutableCopy的内存管理剖析
  5. 计算机专硕没有宿舍,没有补贴,不提供宿舍,读研究生还要家里支持,应届生读非全太难...
  6. vue 进行ajax请求,使用axios
  7. springmvc dao怎么可以不写实现类_SpringMVC(一)细聊ContextLoaderListener 是怎么被加载的...
  8. 全款房抵押贷款利息和抵押率各是多少?
  9. npm install 报错 汇总_2020年特岗教师招聘征集志愿人员资格复审、面试公告汇总...
  10. PEAR简介:用PEAR来写你的下一个php程序
  11. ModelArts微认证零售客户分群知识点总结
  12. 在集设网看世界顶级电影海报欣赏,太美了!
  13. java 自动下载自动搜索_360搜索彩蛋自动化开发实践
  14. 啊哈算法纸牌游戏———小猫钓鱼
  15. TDS510-USB2.0驱动
  16. “网络吸血鬼” Leech
  17. html文件匹配歌手名和歌名,获取QQ音乐歌手姓名、歌曲信息、播放链接,爬,起,qq,名字...
  18. 大数据技术之Flume —— (1)一文入门学习Flume
  19. 使用Qt Designer制作软件的图形界面
  20. wi-fi测试软件正确吗,几款Wi-Fi信号测试小工具

热门文章

  1. 中式庭院,雅致生活,无法拒绝的美
  2. Win11更改声音输出设备有什么方法?
  3. 技术-2022-05-《Spring cloud Alibaba全解》阅读笔记
  4. 表单校验之---校验姓名/护照正则/台湾往来通行证/校验身份证号/港澳往来通行证正则/军官证正则/检验手机号/校验银行卡号
  5. 服务编排-前端应用和后端服务能力间关键衔接
  6. 酪氨酸脱羧酶丨Worthington粪链球菌酪氨酸脱羧酶的特征
  7. android studio如何设置输出值的小数点_Stata结果输出系列A:esttab, xxx2docx, outreg2, asdoc 对比...
  8. 淘宝白菜群催生欺诈购买网赚
  9. Visdom 解决OSError: [Errno 98] Address already in use
  10. cisco实现ACL配置