【Cocos2dx】菜单

【Cocos2dx】菜单,第1张

概述Cocos2dx的菜单在《【Cocos2dx】用当前游戏状态作为暂停背景、纯文字纯图片按钮与不间断的重复动作序列》(点击打开链接)中开发按钮的时候,已经使用过了。只是当时使用菜单的时候,只在菜单中添加了一个菜单子项,看起来仅仅是一个按钮的效果,无法体会到Cocos2dx的菜单是什么使用的。 其实Cocos2dx的菜单使用依次简单。 比如如下例子: 这是在手游中非常常见的菜单。为了测试各个按钮的响应

Cocos2dx的菜单在《【Cocos2dx】用当前游戏状态作为暂停背景、纯文字纯图片按钮与不间断的重复动作序列》(点击打开链接)中开发按钮的时候,已经使用过了。只是当时使用菜单的时候,只在菜单中添加了一个菜单子项,看起来仅仅是一个按钮的效果,无法体会到Cocos2dx的菜单是什么使用的。

其实Cocos2dx的菜单使用依次简单。

比如如下例子:


这是在手游中非常常见的菜单。为了测试各个按钮的响应,还在这个菜单上方定义一个文本,点击不同的菜单子项则会将此文本改变成相应的函数。

使用CcmenuItemLabel或者CcmenuItemImage加上Ccmenu去实现即可。

首先在HelloWorldScene.h做如下的声明:

#include "cocos2d.h"USING_NS_CC;//一旦在头文件声明用到了CC,就必须有这句class HelloWorld:public cocos2d::cclayer{public:	virtual bool init();	static cocos2d::CCScene* scene();	CREATE_FUNC(HelloWorld);private:	cclabelTTF *label;//点击响应文字	//菜单子项文字	cclabelTTF *label1;	cclabelTTF *label2;	cclabelTTF *label3;	//各个按钮的响应事件	voID button1_onclick(CCObject* pSender);	voID button2_onclick(CCObject* pSender);	voID button3_onclick(CCObject* pSender);};

之后,在HelloWorldScene.cpp的核心代码如下:
#include "HelloWorldScene.h"CCScene* HelloWorld::scene(){	CCScene *scene = CCScene::create();	HelloWorld *layer = HelloWorld::create();	scene->addChild(layer);	return scene;}bool HelloWorld::init(){	CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();//获取尺寸	//各个菜单子项	label1=cclabelTTF::create("button1","Arial",24);	CcmenuItemLabel *menu_item_label1=CcmenuItemLabel::create(label1,this,menu_selector(HelloWorld::button1_onclick)); 	label2=cclabelTTF::create("button2",24);	CcmenuItemLabel *menu_item_label2=CcmenuItemLabel::create(label2,menu_selector(HelloWorld::button2_onclick));  	label3=cclabelTTF::create("button3",24);	CcmenuItemLabel *menu_item_label3=CcmenuItemLabel::create(label3,menu_selector(HelloWorld::button3_onclick));  	int heightItem=menu_item_label1->getContentSize().height;//求菜单子项的高度	//设置所有菜单子项的坐标(相对于Ccmenu的相对坐标)	menu_item_label1->setposition(ccp(0,0));	menu_item_label2->setposition(ccp(0,-heightItem));	menu_item_label3->setposition(ccp(0,-heightItem*2));	Ccmenu* menu1=Ccmenu::create(menu_item_label1,menu_item_label2,menu_item_label3,NulL);//将各个菜单子项加到菜单上面去	menu1->setposition(ccp(visibleSize.wIDth/2,visibleSize.height/2));//菜单的定位	this->addChild(menu1);	label=cclabelTTF::create("0",24);//设定相应文本的位置	label->setposition(ccp(visibleSize.wIDth/2,visibleSize.height/2+heightItem));//放在菜单的上方	this->addChild(label);		return true;}//各个菜单子项的回调函数voID HelloWorld::button1_onclick(CCObject* pSender){	label->setString("1");}voID HelloWorld::button2_onclick(CCObject* pSender){	label->setString("2");}voID HelloWorld::button3_onclick(CCObject* pSender){	label->setString("3");}

可能各位看完上面的代码,对菜单子项的布局与菜单的关系有点困惑,具体,关于菜单子项CcmenuItemLabel的setposition是相对于菜单的位置而言的,是这个菜单子项对于菜单偏离多少位置,而不是这个菜单子项在场景的绝对位置。

总结

以上是内存溢出为你收集整理的【Cocos2dx】菜单全部内容,希望文章能够帮你解决【Cocos2dx】菜单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1074100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存