现在的位置: 首页 > 综合 > 正文

cocos2d-x 菜鸟实习生学习篇(九) 控件篇(上)

2014年06月09日 ⁄ 综合 ⁄ 共 2275字 ⁄ 字号 评论关闭

话说,一周又这么过去了。我还在继续我的实习自学生涯。一方面觉得来这公司上班一个多月,整天自学打酱油,有一种吃白饭的感觉;另一方面,自己这点水平能做什么呢?再说现在的这种日子过得也还滋润,轻松自在,快意江湖。。。boss让我去了解下-x 里的一些控件要怎么使用,百度一下控件是什么东东,有个大概后我就想,CCLayer 这种算不算控件呢?问了几个人,最后知道要去看testcpp,里面只要是control 开头的就是控件。好吧,白学一个多月了,testcpp框架都还没搞熟。

接触控件是从 笨木头 的博客开始的,http://blog.csdn.net/musicvs?viewmode=contents

不得不说,笨木头的博客写的都很详细,范围也较广,他博客的最大特点就是:太幽默了!!!

我是模仿testcpp 的框架模式,自己创建一个新的工程,然后分别对每个控件进行描述。当然了,我自己弄出来的这个框架肯定无法跟test相比的。。。,上个图:

1、先说HelloWorldScene.h 里对调用这些控件的回调函数进行声明;最后在.cpp 里对他们进行定定义

    void callControlButton(CCObject* pSender);  
    void callControlPotentiometer(CCObject* pSender);  
    void callControlStepper(CCObject* pSender);  
    void callControlSwitch(CCObject* pSender);  
    void callControlSlider(CCObject* pSender);  
    void callControlColourPicker(CCObject* pSender);

2、添加各个空间的文字菜单,如添加controlColourPicker菜单  

    CCMenuItemFont::setFontName("Marker Felt");    
    CCMenuItemFont::setFontSize(30);    
  
    CCMenuItemFont *controlColourPicker = CCMenuItemFont::create("ControlColourPicker",this,menu_selector(HelloWorld::callControlColourPicker)  );    
    CC_BREAK_IF(!controlColourPicker);  
  
    CCMenu* menu = CCMenu::create(controlButton,controlPotentiometer,controlStepper,controlSwitch,controlSlider,controlColourPicker,NULL);  
    menu->setPosition(ccp(s.width/2,s.height/2));  
    menu->alignItemsVertically();  
    this->addChild(menu)

这样子上图的场景基本完成了,接下来就是编写对点击进去后的新的场景,效果如下:

3、点击mainMenu这个菜单可以返回主界面。由于每个控件的界面都需要用到mainMenu 这个菜单,而如果每次需要的时候再重复创建就太过麻烦了,所以我干脆创建了一个新的类作为接口:

MainMenu : public cocos2d::CCLayer  
{  
public:  
    virtual void mainMenu();  
  
    virtual void callMainMenu(CCObject* pSender);  
};  

#include "MainMenu.h"  
#include "HelloWorldScene.h"  
using namespace cocos2d;  
  
void MainMenu::mainMenu()  
{  
    CCMenuItemFont::setFontName("Marker Felt");    
    CCMenuItemFont::setFontSize(20);    
  
    CCMenuItemFont *mainMenu = CCMenuItemFont::create("mainMenu",this,menu_selector(MainMenu::callMainMenu));    
  
    mainMenu->setPosition(ccp(400,30));  
    CCMenu* menu = CCMenu::create(mainMenu,NULL);  
    this->addChild(menu,50);  
    menu->setAnchorPoint(CCPointZero);  
    menu->setPosition(ccp(0,0));  
}  
void MainMenu::callMainMenu(CCObject* pSender)  
{  
    CCScene *scene = CCScene::create();//这是一个新的场景。  
    scene->addChild(HelloWorld::create());  
   
    CCDirector::sharedDirector()->replaceScene(scene);  
}

这样子以后每次要调用到mainMenu 的时候,只要继承MainMenu 即可,如:

class ControlColourPicker : public MainMenu

然后具体调用如下:

    MainMenu *mainMenu = new MainMenu();  
    mainMenu->mainMenu();  
    this->addChild(mainMenu);

好了,时间有限,先扯这些,下回见。

抱歉!评论已关闭.