版权声明:本文为博主原创文章,未经博主允许不得转载。访问本人博客可以百度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()
{
}