展会信息港展会大全

cocos2dx -- 学习笔记 利用UIButton制作虚拟按键
来源:互联网   发布日期:2015-09-28 11:07:45   浏览:2324次  

导读: 今天,继续完善自己的小DEMO,要加入一些虚拟按键,首先是,上下左右方向键。 这里需要实现,按下持续走,松开则停止的效果。 尝试着用CCMenuImage做,可惜CCMenuImage只支持按...

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

}

}

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

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

效果图如图:

赞助本站

人工智能实验室
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港