cocos2dx -- 学习笔记 利用UIButton制作虚拟按键

今天,继续完善自己的小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;
	}
}

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

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

效果图如图:

时间: 2024-11-03 22:11:15

cocos2dx -- 学习笔记 利用UIButton制作虚拟按键的相关文章

Cocos2d-x学习笔记(五)CCLayer分析及输入事件处理(触摸、重力传感器、按键)

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38733415 简介 上一讲我们简单的介绍了CCScene,这一讲我们继续来看另一个核心组件CCLayer,他和CCScene有些类似,都是用来收纳其他节点,但是按照层次来说的话,CCLayer应该包含在CCScene之中.老规矩,我们从代码看起. 源码分析 class CC_DLL CCLayer : public CCNode, public CCTouchDele

Cocos2dx 学习笔记整理----在项目中使用图片(二)

之前了解了一种比较简单的图片的使用方式, 今次来了解稍微复杂一点的图片使用方式,plist+png. 这里要用到之前提到的Texture Packer. Texture Packer是一款图片打包工具,Texture Packer可以将素材打包成我们项目需要的格式. Cocos2dx支持很多种格式, 我们可以将某一种类的或者有共性的图片打包到一个png,然后用plist管理,以节约加载和内存,且显卡支持的纹理尺寸的长宽为2的n次幂,Texture Packer会把纹理整合到次尺寸. 今次我们利用

Cocos2d-x学习笔记(二)Cocos2d-x整体框架描述

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38680123 上一节我们简单分析了HelloWorld工程,这一讲我们将进一步来看看Cocos2d-x的整体框架. 在了解Cocos2d-x的整体框架之前,我们不妨想想拍摄一部电影需要些什么? 导演.舞台(场景).布景.演员,有了这些基本条件后,在这些元素都有了之后,演员就可以根据剧本,表现不同的动作行为. 同理,做一个游戏就像是拍摄一部电影,你同样需要这些元素,而C

android学习笔记——利用BaseAdapter生成40个列表项

RT: main.xml ? 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"               android:orientation="vertical"        

【Cocos2D-X 学习笔记】为精灵添加单点触控

由于Cocos2d-x处于新学的阶段,因此最近也无法进行系统地更新,只会选择一些典型的Demo贴上来,一来是与大家分享,而来也可以作为以后回顾时的参考. 今天介绍一下Cocos2d-x的触摸事件处理,了解Android开发的朋友们知道,Android里会用一个OnClickListener()进行事件监听,而在J2SE中也会有Event类实现专门的监听处理.在Cocos2d-x中,因为是游戏引擎,用户在玩游戏时总是要通过屏幕与游戏进行交互,可想而知触摸事件是主要处理的事件.这里主要讲一下如何为精

cocos2dx学习笔记(2)

昨天尝试了cocos2dx在win下的开发环境配置,并且运行了cocos的helloword程序,晚上想要尝试一下android开发环境配置,顺便学习cocos在eclipse下的JNI机制,按照cocoa中文论坛的android环境配置弄了NDK,并配置了环境变量,由于想要学习cocos的luabind机制(这个我们公司游戏的引擎用的很多,确实比较有兴趣),一切搞定不明就里的用eclipse导入了cocos3.0rc中的tests目录下的cpp-tests工程(这算android开发久了的毛病

Cocos2dx 学习笔记整理----场景切换

据说Cocos2dx场景切换的方法有32种:cocos2dx 常见的32种切换场景的动画 无需一一求证,只需要知道切换场景需要怎么做就行了. 作为导演CCDirector,切换场景的事情当然归它管了. 切换场景的接口如下: ? 1 CCDirector::sharedDirector()->replaceScene(cocos2d:CCScene * pScene); 所以,我们只要把需要切换的场景实例传进去就可以了. ? 1 2 CCScene * pScene = GameMain::sce

Cocos2dx 学习笔记整理----第一个项目

接上一节, 进入新建的项目下面的proj.win32下面,找到项目名.sln文件(我的是game001.sln),双击会通过VS2010打开.(当然,你装了VS什么版本就是什么版本) 将你的项目设为启动项目, 切换到解决方案视图, 然后邮件点击解决方案, 选择生成解决方案. 第一次生成根据个人机器性能会消耗大概1-3分钟,呵呵. 但是以后会快很多的. 生成成功的话会在输出窗口显示如下: 一般都会生成成功,但是我生成的时候失败了很多次,后来发现是这个问题:http://www.cnblogs.co

Cocos2dx 学习笔记整理----开发环境搭建

最近在学习cocos2dx,预备将学习过程整理成笔记. 需要的工具和环境整理一下: 使用的版本 cocos2dx目前已经出到了v3.1.1,学习和项目的话还是用2.2.3为宜,毕竟不大想做小白鼠,并且学习了几天之后才发出3.X版本的,版本内容变动比较大. 开发环境 1 jdk 1.6以上 2 python 2.7为宜(创建项目要用的) 3 NDT+Android SDK 4 Cygwin或者MinGW 开发工具 1 Eclipse + CDT + ADT 2 VS2010 3 Sublime T