Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

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

$
0
0

话说,一周又这么过去了。我还在继续我的实习“自学”生涯。一方面觉得来这公司上班一个多月,整天自学打酱油,有一种吃白饭的感觉;另一方面,自己这点水平能做什么呢?再说现在的这种日子过得也还滋润,轻松自在,快意江湖。。。

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.h
class 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 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles