Cocosd-x3.1 Menu使用示例

1、头文件

#include "cocos2d.h"
USING_NS_CC;

class MenuItemDemo : public cocos2d::Layer
{
public:
    // there's no 'id' in cpp, so we recommend returning the class instance pointer
    static cocos2d::Scene* createScene();

    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
    virtual bool init();

    // a selector callback
    void menuCloseCallback(cocos2d::Ref* pSender);

    // implement the "static create()" method manually
    CREATE_FUNC(MenuItemDemo);
};

2、cpp文件

#include "MenuItemDemo.h"
USING_NS_CC;

Scene* MenuItemDemo::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();

    // 'layer' is an autorelease object
    auto layer = MenuItemDemo::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;

}

bool MenuItemDemo::init()
{
    bool bRet = false;
    do{
        CC_BREAK_IF(!Layer::init());
        auto winSize = Director::getInstance()->getWinSize();
        //文字菜单项
        auto item1 = MenuItemFont::create("Item Font Test",[&](Ref* sender)
                                          {
                                              log("Item Font CallBack called");
                                          });
        item1->setFontSize(40);
        item1->setFontName("Marker Felt");
        item1->setPosition(Vec2(winSize.width/4,winSize.height/3*2));

        auto menu1 = Menu::create(item1,NULL);
        menu1->setPosition(Vec2::ZERO);
        addChild(menu1);

        //图片菜单项
        auto item2 = MenuItemImage::create("CloseNormal.png","CloseSelected.png",[&](Ref* sender){
            log("MenuItemImage");
        });
        item2->setPosition(Vec2(winSize.width/2,winSize.height/3*2));
        menu1->addChild(item2);
        //标签菜单项
        auto item3 = MenuItemLabel::create(LabelTTF::create("Label Test", "Arial", 40), [&](Ref* sender){
            log("Label CallBack called");
        });
        item3->setPosition(Vec2(winSize.width/4*3,winSize.height/3*2));
        menu1->addChild(item3);
        //触发器菜单项,实现开关关闭效果
        auto item4 = MenuItemToggle::createWithCallback([&](Ref* sender){
            log("Toggle Touched");
        }, MenuItemFont::create("On"),MenuItemFont::create("Off"),NULL);
        MenuItemFont::setFontName("Marker Felt");
        MenuItemFont::setFontSize(35);
        item4->setPosition(Vec2(winSize.width/4,winSize.height/3));
        menu1->addChild(item4);
        //高亮效果
        auto item5 = MenuItemFont::create("Notice This Menu",[&](Ref* sender){
            log("MenuItem touched");
        });
        item5->setPosition(Vec2(winSize.width/2,winSize.height/3));
        auto color_action = TintBy::create(0.5f, 0, -255, -255);
        auto color_back = color_action->reverse();
        auto seq = Sequence::create(color_action,color_back, NULL);
        item5->runAction(RepeatForever::create(seq));
        menu1->addChild(item5);
        //移动菜单
        auto item6 = MenuItemFont::create("Move MenuItem",[&](Ref*){
            log("Move Item Called");
        });
        item6->setPosition(Vec2(winSize.width/4*3,winSize.height/3));
        auto moveTo = MoveTo::create(2.25, Vec2(winSize.width/4*3,winSize.height-30));
        item6->runAction(moveTo);
        menu1->addChild(item6);

        bRet = true;
    }while (0);

    return bRet;
}

3、效果图

时间: 2024-07-30 03:20:22

Cocosd-x3.1 Menu使用示例的相关文章

Android的onCreateOptionsMenu()创建菜单Menu

android一共有三种形式的菜单:             1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(subMenu) 其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来. 1.Activity菜单机制  (与dialog类似) Activity有一套机制来实现对菜单的管理,方法如下: public class MainActivity extends Activity

【转】Android的onCreateOptionsMenu()创建菜单Menu详解

原文网址:http://www.linuxidc.com/Linux/2012-02/55500.htm Android一共有三种形式的菜单:            1.选项菜单(optinosMenu)            2.上下文菜单(ContextMenu)            3.子菜单(subMenu)其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来. 1.Activity菜单机制 (与dialog类似)

【转】黑马程序员_WPF基础属性、控件和语法

1.WPF事件中的sender --WPF中所有事件响应方法第一个参数都是sender,代表触发事件的控件对象,是object类型,需要类型转换使用. --应用:多个按钮的Click共享一个事件处理方法 2.集合List<T> --有时候不能预先确定长度或者需要动态修改内容和长度,这时候可以使用List<T>泛型集合. --List<T>,可以看做是动态的数组.Add.Clear.Count.Remove.RemoveAt.ToArray(转换为数组) --List&l

如何在WPF中通过XAML代码创建菜单项

示例代码: 示例1:   <Grid>         <Menu>              <MenuItem Header="File">                    <MenuItem Header="Open"/>                    <MenuItem Header="Save"/>                    <MenuItem 

尽可能保留原有数据,建立UEFI与BIOS双启PE优盘

尽可能保留原有数据,建立UEFI与BIOS双启PE优盘1.确保优盘或者移动硬盘有一个FAT32分区,如果没有FAT32分区,就用傲梅分区助手或者ppm转换一个现有的分区到FAT32分区0x0C,或者新建一个FAT32分区,然后把支持UEFI启动的WIN8PE.ISO解压到该分区.2.用bootice把优盘或移动硬盘MBR写入grub4dos0.4.5c,然后把grldr,grldr.mbr,menu.lst拷贝到根目录,目录结构如下:X:\ │ grldr │ grldr.mbr │ menu.

深入剖析 HTML5

作为新一代的 HTML 标准,HTML5 不仅强化了 Web 网页的表现性能,还追加了本地数据库等 Web 应用的功能.虽然 HTML5 标准仍处于完善之中.然而,大部分新版本的浏览器已经能够支持某些 HTML5 的功能了.HTML5 标准所描述的功能非常强大,如:它提供了一些新的元素和属性,例如 <nav>(网站导航块)和 <footer> 等等,这种标签将有利于搜索引擎的索引整理.同样,也加入很多新的 JavaScript 对象和方法,使得我们可以基于更多的接口 API 开发功

【IOS笔记】Event Delivery: The Responder Chain

Event Delivery: The Responder Chain  事件分发--响应链 When you design your app, it’s likely that you want to respond to events dynamically. For example, a touch can occur in many different objects onscreen, and you have to decide which object you want to re

Yii2 menu navbar nav小部件的使用示例

menu Menu::widget( [ [ 'label' => $menu['name'], 'url' => [$menu['route']], 'items' => [ [ 'label' => $menu['name'], 'url' => [$menu['route']] ], .... ] ], [ 'label' => $menu['name'], 'url' => [$menu['route']], 'items' => [ [ 'labe

Android笔记:Menu

使用菜单选项Menu,需要进行以下操作:(1)重写onCreateOptionsMenu方法: public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } (2)在menu的main.xml文件中加入item的声明. (3)重写onOptionsItemSelected方法 public boolean onOptionsItemSelec