cocos2dx -- 学习笔记 利用UIButton制作虚拟按键
发布时间:2020-12-14 21:16:16 所属栏目:百科 来源:网络整理
导读:今天,继续完善自己的小DEMO,要加入一些虚拟按键,首先是,上下左右方向键。 这里需要实现,按下持续走,松开则停止的效果。 尝试着用CCMenuImage做,可惜CCMenuImage只支持按下再弹起后,的事件处理。无法对按下到抬起之间的这段时间进行控制。 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; } }
至此,虚拟按键就有着落啦。
效果图如图:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |