在應用的開發中,無論是Android操作系統還是iOS操作系統,其開發框架都提供了控件,包括按鍵、拖動滑塊等,這樣提高了開發效率。對于游戲的開發,UI的開發同樣需要控件來提高開發效率。對Cocos2D-x來說,從2.0版本開始提供了很多控件類來幫助我們更好地開發UI。
在HelloWorld.h中加入如下倆句代碼
1
2
3
|
//需要包含如下的頭文件和命名空間的申明 #include "cocos-ext.h" using namespace cocos2d::extension; |
同時加入button事件響應的函數
1
|
void touchDown(CCObject * pSender,CCControlEvent evt); |
以下是HelloWorld.cpp中的init函數
- //在附加包含目錄中新增一項E:cocos2d-x-2.2cocos2d-x-2.2extensions
- //在配置屬性->連接器->輸入的附加依賴項中添加libExtensions.lib
- //經過上述步驟才可以使用控件類
- bool HelloWorld::init()
- {
- bool bRet = false;
- do
- {
- CC_BREAK_IF(! CCLayer::init());
- //創建文本類,是顯示在button中的文本
- CCLabelTTF * title = CCLabelTTF::create("music","Arial",32);
- //可以設置一下title的顏色
- title->setColor(ccc3(255,0,0));
- //創建一張九妹圖片(一張支持拉伸的圖片,拉伸可以避免圖片失真,可以節省空間)
- //按鈕處于正常狀態下的圖片
- CCScale9Sprite * buttonNormal = CCScale9Sprite::create("buttonBackground.png");
- //控件類CCControlButton,第一個參數就是按鈕顯示的文本,第二個參數就是按鈕正常狀態下的圖片
- //button的大小和title的大小是相同的,這就是為什么選九妹圖片的原因了,會隨著title的大小自動拉伸
- CCControlButton * button = CCControlButton::create(title,buttonNormal);
- //創建一張按鈕按下的背景圖片
- CCScale9Sprite * spriteSelected = CCScale9Sprite::create("buttonHighlighted.png");
- //設置button按下時的背景圖片,第二個參數是一個宏,f12查看其他的宏
- button->setBackgroundSpriteForState(spriteSelected,CCControlStateSelected);
- //修改title的顏色
- button->setTitleColorForState(ccc3(0,255,255), CCControlStateHighlighted);
- button->setPosition(ccp(240,160));
- this->addChild(button);
- //為按鈕添加事件
- button->addTargetWithActionForControlEvents(this,cccontrol_selector(HelloWorld::touchDown),
- CCControlEventTouchDown);
- bRet = true;
- } while (0);
- return bRet;
- }
關于事件響應函數的實現
1
2
3
4
|
void HelloWorld::touchDown(CCObject * pSender,CCControlEvent evt) { CCLog( "touch down!" ); } |