Cocos2d-x之CCMenu理解

Menu创建菜单:

Cocos2d-x下的菜单创建包括:

1.CCMenuItemFont    字体按钮创建

CCMenuItemFont * onlineVideo = MenuItemFont::create("Play online video", CC_CALLBACK_1(HelloWorld::menuOnlineVideoCallback, this));其中CC_CALLBACK_1代表其括号体里面为一回调函数,1代表参数个数;

onlineVideo->MenuItemFont::setFontSize(20);表示字体的大小;

2.CCMenuItemImage    图片按钮创建

顾名思义,按钮以图片的形式存在,点击后进入回调函数响应。

auto closeItem = MenuItemImage::create("CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,origin.y + closeItem->getContentSize().height/2));

3.CCMenuItemToggle 开关按钮创建

CCMenuItemToggle* itemWithTarget(CCObject* target, SEL_MenuHandler selector, CCMenuItem* item, ...);       

CCMenuItemToggle* item1 = CCMenuItemToggle::itemWithTarget(this,menu_selector(MenuLayer4::menuCallback),

CCMenuItemFont::itemFromString( "On" ),

CCMenuItemFont::itemFromString( "Off"),NULL );

CCMenu:

auto menu = Menu::create(closeItem,NULL);其实create内的参数可以为n个参数,NULL参数表示截至的参数,如此一来,当有n个参数时,不必每次都调用menu->addchild(item),可以方便的写成以下形式:

auto closeItem = MenuItemImage::create("CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

auto resourceVideo = MenuItemFont::create("Play resource video", CC_CALLBACK_1(HelloWorld::menuResourceVideoCallback, this));

auto onlineVideo = MenuItemFont::create("Play online video", CC_CALLBACK_1(HelloWorld::menuOnlineVideoCallback, this));

auto ratioSwitch = MenuItemFont::create("KeepRatioSwitch", CC_CALLBACK_1(HelloWorld::menuRatioCallback, this));

auto fullSwitch = MenuItemFont::create("FullScreenSwitch", CC_CALLBACK_1(HelloWorld::menuFullScreenCallback, this));

auto menu = Menu::create(resourceVideo,onlineVideo,ratioSwitch,closeItem,fullSwitch,NULL);

menu->alignItemsVerticallyWithPadding(30);此句话的意思是Menu下的内容垂直对齐,30对应与间隔;

下面举个例子来说明上述菜单中回调函数的应用:

void HelloWorld::menuResourceVideoCallback(Ref* pSender)
{
if (_videoPlayer)
{
sprite->setOpacity(0);
_videoPlayer->setFileName("v.mp4");
_videoPlayer->play();
}
}

点击Menu中的playRecource菜单按钮后,执行此函数,播放本地视频。

 

 

时间: 2024-08-01 09:39:50

Cocos2d-x之CCMenu理解的相关文章

cocos2d-x 发动机分析:程序如何开始和结束?

原创地址:http://game.dapps.net/gamedev/game-engine/9515.html 感谢原创分享! 怎么样使用 Cocos2d-x 高速开发游戏,方法非常easy,你能够看看其自带的例程,或者从网上搜索教程,执行起第一个 Scene HelloWorldScene.然后在 HelloWorldScene 里面写相关逻辑代码,加入我们的层.精灵等 ~ 我们并不一定须要知道 Cocos2d-x 是怎样执行或者在各种平台之上执行,也不用知道 Cocos2d-x 的游戏是怎

Cocos2d-x 程序是如何开始运行与结束的

题记:对于技术,我们大可不必挖得那么深,但一定要具备可以挖得很深的能力 问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个 Scene HelloWorldScene,然后在 HelloWorldScene 里面写相关逻辑代码,添加我们的层.精灵等 ~ 我们并不一定需要知道 Cocos2d-x 是如何运行或者在各种平台之上运行,也不用知道 Cocos2d-x 的游戏是如何运行起来的,它又是如何渲染界面的 ~~~ 我们只用

对cocos2d 之autorelease\ratain\release的理解

前言: 三种情况,引出问题 new出来的对象需要释放,而释放时,如果有其他人引用了这个对象,再次使用这个对象时,则会导致无效指针报错. 于是有了引用计数的施放管理机制. 对于一个返回对象指针的方法.你若不看文档不看内部代码,你无法知道返回的这个指针需不需要你来释放.同样的对于将一个指针作为参数给一个方法后,你为犹豫我能不能施放这个指针.因为你不知道这个方法内部会不会将你的指针施放. 于是有了谁拥有谁施放的施放管理思想. 使用了上述管理机制和思想后,有些特定情况.比如方法内新建一个对象,然后返回对

cocos2D(八)---- CCMenu && CCMenuItem

些菜单项让用户開始游戏.暂停\继续游戏.打开\关闭音乐或者是返回到上一个界面,比方以下两张图中用红色线框标记的菜单项     我们能够使用CCMenu和CCMenuItem实现上述的菜单功能,CCMenu继承自CCLayer.仅仅能加入CCMenuItem为子节点.一个CCMenuItem就能够表示一个菜单项. CCMenuItem继承自CCNode.来看下它的继承结构 以下直接上代码 [java] view plaincopy // 第一个菜单项:CCMenuItemFont // 设置文字大

Cocos2D学习笔记(1)- 常用的类

1.坐标系 >屏幕坐标系(UIKit):原点在左上角! >OpenGl坐标系:原点在屏幕的左下角! 2.游戏设计:Director--Scene--Layer--Sprite. >CCDirector:导演类,相当于是游戏策划,负责整个游戏的布局和运行规则的制定. >CCScene:场景类,每个场景可以是一个界面或一个关卡. >CCLayer:图层类,为了方便游戏界面的渲染管理. >CCSprite:精灵类, 小结:一个导演类(CCDirector)可以指挥多个场景类(

ios中关于对锚点的理解

锚点在ios中见到的地方不多,大部分用在动画中. 今天看到一个动画,上面都是关于锚点的,锚点这个概念在两年前看cocos2d得基本概念时接触过,当时没怎么看,今天看到了,就在好好的学一下. 看了一篇blog,是关于锚点的,就借鉴一些上面的图像: cocos2d里采用OpenGL ES坐标系,坐标原点在屏幕左下角.而ios采用的是Quartz 2D坐标系,坐标原点在屏幕左上角. 在cocos2d和ios中分别把视图的坐标点设为(10,10),结果如下: 那么什么是锚点呢?下面以一个例子来说明: 比

cocos2D 虚拟摇杆Joystick功能实现

@implementation InputLayer        - (id)init    {        if(self = [super init])        {            winSize = [[CCDirector sharedDirector] winSize];            [self addJoystick];            [self addFireButton];            [self scheduleUpdate];   

COCOS2D-X描点的理解

Cocos2d-x :什么是锚点?(简单点说:锚点就是图片的原点) anchor point 究竟是怎么回事? 之所以造成不容易理解的是因为我们平时看待一个图片是 以图片的中心点 这一个维度来决定图片的位置的.而在cocos2d中决定一个 图片的位置是由两个维度 一个是 position  另外一个是anchor point.只要我们搞清楚他们的关系,自然就迎刃而解. 默认情况下,anchor point在图片的中心位置(0.5, 0.5),取值在0到1之间的好处就是,锚点不会和具体物体的大小耦

Cocos2d坐标系转换

Cocos2d-x坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系(高中数学里面那种). 笛卡尔坐标系 笛卡尔坐标系中定义右手系原点在左下角,x向右,y向上,z向外,OpenGL坐标系为笛卡尔右手系. 屏幕坐标系和Cocos2d坐标系 标准屏幕坐标系使用和OpenGL不同的坐标系,而Cocos2d则使用和OpenGL相同的坐标系. iOS, Android, Windows Phone等在开发应用时使用的是标准屏幕坐标系,原点为屏幕左上角,x向右,y向下. Cocos2d坐标系和OpenG