话说,一周又这么过去了。我还在继续我的实习“自学”生涯。一方面觉得来这公司上班一个多月,整天自学打酱油,有一种吃白饭的感觉;另一方面,自己这点水平能做什么呢?再说现在的这种日子过得也还滋润,轻松自在,快意江湖。。。
boss让我去了解下-x 里的一些控件要怎么使用,百度一下控件是什么东东,有个大概后我就想,CCLayer 这种算不算控件呢?问了几个人,最后知道要去看testcpp,里面只要是control 开头的就是控件。好吧,白学一个多月了,testcpp框架都还没搞熟。
接触控件是从 笨木头 的博客开始的,http://blog.csdn.net/musicvs?viewmode=contents
不得不说,笨木头的博客写的都很详细,范围也较广,他博客的最大特点就是:太“幽默”了!!!
我是模仿testcpp 的框架模式,自己创建一个新的工程,然后分别对每个控件进行描述。当然了,我自己弄出来的这个框架肯定无法跟test相比的。。。,上个图:
1、先说HelloWorldScene.h 里对调用这些控件的回调函数进行声明;最后在.cpp 里对他们进行定定义
// a selector callback 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
mainMenu.hclass MainMenu : public cocos2d::CCLayer { public: virtual void mainMenu(); virtual void callMainMenu(CCObject* pSender); };
//mainMenu.cpp #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,
然后在init中:
//add mainMenu MainMenu *mainMenu = new MainMenu(); mainMenu->mainMenu(); this->addChild(mainMenu);
好了,时间有限,先扯这些,下回见。
作者:start530 发表于2013-1-14 16:43:37 原文链接阅读:12 评论:1 查看评论