Cocos2d-x V3.x 中菜单项与菜单的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。访问本人博客可以百度COCO56,获取更多资讯。有事儿请内信或者在文章下方评论 https://blog.csdn.net/COCO56/article/details/85240684

菜单项(如MenuItemSprite,精灵菜单项)是一个选项,而菜单(Menu)则是菜单项的集合。

举个例子,比如下图中一共有三个选项(返回菜单项,向左的菜单项和向右的菜单项),菜单则可以是这些菜单项的集合。

 核心代码:

资源:

GameScene.h

#pragma once

#include "cocos2d.h"
USING_NS_CC;

#include "GameScene.h"
#include "GameSprite.h"

class GameScene : public Layer
{
public:
	static Scene* createScene();
	bool init();
	void backAction();
	void rightAction();
	void leftAction();

	EventListenerTouchOneByOne* listener;
	GameSprite* fruitSprite;
	Size windowSize;
	int fruitNum = 0;

	CREATE_FUNC(GameScene);
};

GameScene.cpp

#include "GameScene.h"

#include "SimpleAudioEngine.h"
using namespace CocosDenshion;

Scene* GameScene::createScene()
{
	Scene *scene = Scene::create();
	GameScene *layer = GameScene::create();
	scene->addChild(layer);
	return scene;
}

bool GameScene::init()
{
	if (Layer::init())
	{
		//获取分辨率(窗口大小)
		windowSize = getContentSize();

		//添加背景
		Sprite *bg = Sprite::create("bg.png");
		bg->setAnchorPoint(Vec2(0, 0));
		bg->setScale(0.5);
		addChild(bg);

		//设置返回菜单项(菜单与菜单项的区别:一个菜单包含很多菜单项)
		Sprite *back_normal = Sprite::create("back.png");
		Sprite *back_pressed = Sprite::create("back_pressed.png");
		MenuItemSprite *backItem = MenuItemSprite::create(back_normal, back_pressed, CC_CALLBACK_0(GameScene::backAction, this));
		backItem->setScale(0.5);
		backItem->setAnchorPoint(Vec2(0, 1));
		backItem->setPosition(0, windowSize.height);

		//设置右键菜单项
		Sprite *right_normal = Sprite::create("right.png");
		Sprite *right_pressed = Sprite::create("right_pressed.png");
		MenuItemSprite *rightItem = MenuItemSprite::create(right_normal, right_pressed, CC_CALLBACK_0(GameScene::rightAction, this));
		rightItem->setAnchorPoint(Vec2(0, 0));
		rightItem->setPosition(windowSize.height / 2 + right_normal->getContentSize().height - 20, windowSize.width / 5);
		rightItem->setScale(0.5);

		//设置左键菜单项
		Sprite *left_normal = Sprite::create("left.png");
		Sprite *left_pressed = Sprite::create("left_pressed.png");
		MenuItemSprite *leftItem = MenuItemSprite::create(left_normal, left_pressed, CC_CALLBACK_0(GameScene::leftAction, this));
		leftItem->setAnchorPoint(Vec2(1, 0));
		leftItem->setPosition(windowSize.height / 2 + 20, windowSize.width / 5);
		leftItem->setScale(0.5);

		//设置菜单(把所有菜单项加到菜单里),并添加
		Menu *menu = Menu::create(backItem, rightItem, leftItem, NULL);
		menu->setAnchorPoint(Vec2(0, 0));
		menu->setPosition(0, 0);
		addChild(menu,2);

		//添加水果精灵
		fruitSprite = GameSprite::createFruitSprite(fruitNum);
		windowSize = getContentSize();
		fruitSprite->setScale(0.5);
		fruitSprite->setAnchorPoint(Vec2(0.5, 0.5));
		fruitSprite->setPosition(windowSize.height / 2 + fruitSprite->getContentSize().height / 4 + 50, windowSize.width / 2 - fruitSprite->getContentSize().width / 4 - 20);
		addChild(fruitSprite, 1);

		return true;
	}
	return false;
}

void GameScene::backAction()
{

}

void GameScene::rightAction()
{

}

void GameScene::leftAction()
{

}

猜你喜欢

转载自blog.csdn.net/COCO56/article/details/85240684