日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3.cocos2dx它Menu,由menu为了实现场景切换

發布時間:2023/12/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3.cocos2dx它Menu,由menu为了实现场景切换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1 頭文件

TMenu.h

#ifndef __TMENU_H__

#define __TMENU_H__

?

#include "cocos2d.h"

USING_NS_CC;

?

class TMenu :public CCLayer

{

public:

??? static CCScene * scene();

??? CREATE_FUNC(TMenu);

??? bool init();

?

??? CCMenu * menu;

?

??? void menuCallback(CCObject * sender);

??? void closeCallback(CCObject * sender);

?

??? virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);

??? virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);

};

?

#endif

TMenu.cpp

#include "TMenu.h"

#include "AppMacros.h"

#include "T02LayerSprite.h"

#include "T03LayerZorder.h"

#include "T04ColorLayer.h"

#include "T05Coordinate.h"

#include "T06BatchNode.h"

#include "T07Schedule.h"

#include "T08Touch.h"

#include "T09Memory.h"

#include "T10Label.h"

?

//通過sizeof(menu_array)求出數組占用的總空間大小

//通過sizeof(*menu_array)求出數組中的每一個元素的大小

static char * menu_array[]

{

??? "T02LayerSprite.h",

??? "T03LayerZorder.h",

??? "T04ColorLayer.h",

??? "T05Coordinate.h",

??? "T06BatchNode.h",

??? "T07Schedule.h",

??? "T08Touch.h",

??? "T09Memory.h",

??? "T10Label.h"

};

?

CCScene * TMenu::scene()

{

??? CCScene * scene = CCScene::create();

??? TMenu * layer = TMenu::create();

??? scene->addChild(layer);

??? return scene;

}

?

bool TMenu::init()

{

??? CCLayer::init();

?

??? menu = CCMenu::create();

??? //通過以下的方式實現將菜單項加入到menu

??? for (int i = 0; i < sizeof(menu_array) / sizeof(*menu_array); i++)

??? {

??????? CCMenuItem * item = CCMenuItemFont::create(menu_array[i],

??????????? this,

??????????? menu_selector(TMenu::menuCallback));

??????? menu->addChild(item);

??? }

??? //設置菜單的顯示方向為垂直方向

??? menu->alignItemsVertically();

??? addChild(menu);

?

??? CCArray * array = menu->getChildren();

??? CCObject * obj;

??? int i = 0;

??? CCARRAY_FOREACH(array, obj)

??? {

??????? CCMenuItem * item = (CCMenuItem*)obj;

??????? item->setTag(i + 1 + 10000);

??????? i++;

??? }

??? CCMenuItem * closeItem = CCMenuItemImage::create("CloseNormal.png", "CloseSelected.png");

??? closeItem->setTarget(this, menu_selector(TMenu::closeCallback));

??? CCMenu * menu2 = CCMenu::create(closeItem, NULL);

??? menu2->setPosition(CCPointZero);

??? closeItem->setPosition(ccp(winSize.width - closeItem->getContentSize().width / 2,

??????? winSize.height - closeItem->getContentSize().height / 2));

??? addChild(menu2);

?

??? //設置觸摸事件,為可touch

??? setTouchEnabled(true);

??? setTouchMode(kCCTouchesOneByOne);

?

??? return true;

}

?

//當點擊到菜單之后跳轉到指定的CCScene中去

void TMenu::menuCallback(CCObject * sender)

{

??? CCMenuItem * item = (CCMenuItem *)sender;

??? CCScene * pScene = NULL;

??? switch (item->getTag() - 10000)

??? {

??? case 1:

??????? pScene = T02LayerSprite::scene();

??????? break;

??? case 2:

??????? pScene = T03LayerZorder::scene();

??????? break;

??? case 3:

??????? pScene = T04ColorLayer::scene();

??????? break;

??? case 4:

??????? pScene = T05Coordinate::scene();

??????? break;

??? case 5:

??????? pScene = T06BatchNode::scene();

??????? break;

??? case 6:

??????? pScene = T07Schedule::scene();

??????? break;

??? case 7:

??????? pScene = T08Touch::scene();

??????? break;

??? case 8:

??????? pScene = T09Memory::scene();

??????? break;

??? case 9:

??????? pScene = T10Label::scene();

??????? break;

??? }

??? if (pScene != NULL)

??? {

??????? //通過CCDirectorsharedDirector來實現場景的切換

??????? CCDirector::sharedDirector()->replaceScene(pScene);

??? }

}

?

//當點擊關閉的時候游戲退出

void TMenu::closeCallback(CCObject * sender)

{

??? exit(0);

}

?

bool TMenu::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)

{

??? return true;

}

?

void TMenu::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){

??? CCRect rcWin = CCRect(0,40,winSize.width,winSize.height - 80);

??? CCMenuItem * firstItem = (CCMenuItem *)menu->getChildren()->objectAtIndex(0);

??? CCMenuItem * lastItem = (CCMenuItem *)menu->getChildren()->lastObject();

?

??? CCPoint firstInWorld = menu->convertToWorldSpace(firstItem->getPosition());

??? CCPoint lastInWorld = menu->convertToWorldSpace(lastItem->getPosition());

?

??? //當中Delta的坐標表示的是開始坐標的減去最后坐標的差值

??? if (rcWin.containsPoint(firstInWorld) && pTouch->getDelta().y<0)

??????? return;

??? if (rcWin.containsPoint(lastInWorld) && pTouch->getDelta().y>0)

??????? return;

??? menu->setPositionY(menu->getPositionY() + pTouch->getDelta().y);

}

執行結果:

?

版權聲明:本文博客原創文章,博客,未經同意,不得轉載。

轉載于:https://www.cnblogs.com/yxwkf/p/4658589.html

總結

以上是生活随笔為你收集整理的3.cocos2dx它Menu,由menu为了实现场景切换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 韩国女同性做爰三级 | 日韩一级性生活片 | 亚洲老女人视频 | 国内外成人免费视频 | 国产精品69毛片高清亚洲 | 美女扒开粉嫩尿口 | 伊人日韩 | 青青青在线 | 最近中文字幕mv免费高清在线 | 国产色网站 | 精品无码人妻一区二区三区品 | 亚洲成a人片在线 | 久久99精品久久久水蜜桃 | 1000亚洲裸体人体 | 欧美成人精品在线视频 | 无码精品人妻一二三区红粉影视 | 精品人妻一区二区三区四区五区 | 玩弄人妻少妇500系列 | 国产重口老太伦 | 久久久二区| 日韩一区二区三区久久 | 求一个黄色网址 | 全部免费毛片在线播放高潮 | 天堂国产精品 | 精品国产一区二区三区性色 | 亚洲专区区免费 | 午夜免费看片 | 中文字幕亚洲乱码熟女一区二区 | 欧美有码视频 | 特黄一级大片 | 狠狠干精品 | 日日嗨av一区二区三区四区 | 国产精品精品视频 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产在线1区 | 肉色超薄丝袜脚交一区二区图片 | avt天堂网 | 久久久免费观看 | 五月激情四射网 | 欧美一级免费 | 国产一区二区视频播放 | 黄色骚视频 | 秘密基地在线观看完整版免费 | 嫩模一区二区三区 | 插插网站| 黑人精品无码一区二区三区AV | 国产一区二区三区自拍 | 欧美xxxx×黑人性爽 | 久久久免费看 | 日本高清不卡在线观看 | 亲嘴扒胸摸屁股免费视频日本网站 | 播播激情网 | 欧美不卡一区二区 | 性欧美极品另类 | 亚洲精品国产精品乱码 | 婷婷久 | 欧亚一区二区三区 | 亚洲熟悉妇女xxx妇女av | 亚洲一区欧美日韩 | 男人干女人视频 | 久久免费电影 | 男人扒女人添高潮视频 | 99er在线观看| 国产精品久久久久永久免费看 | 成人在线播放av | 色综合日韩| 精品美女 | 欧美激情综合五月色丁香 | www.啪啪.com| 黄色片在线| 成人欧美一区二区三区黑人 | 少妇高潮网站 | 人人舔| 丰满少妇xoxoxo视频 | 国产亚洲精品久久777777 | 亚洲高清免费 | 亚洲成人生活片 | 华人av在线| 成人深夜福利 | 国产91精品高潮白浆喷水 | 最新中文字幕一区 | 人妻无码中文久久久久专区 | 九九激情网| 国内精品国产成人国产三级 | 国产午夜精品视频 | 人人免费操 | 咪咪色影院 | 女人的天堂网站 | 日韩中文字幕av电影 | 日韩成人高清视频在线观看 | 天天夜夜啦啦啦 | 日韩精品美女 | 日韩在线观看视频一区二区 | 浪浪视频在线观看 | av网址观看 | 国产精品扒开做爽爽爽的视频 | 黄色av免费观看 | 亚洲射射射 | 99国产精|