Cocos2d X選單教程 第一部分

2021-06-06 06:38:06 字數 4147 閱讀 7059

此文的cocos2d版是由泰然論壇的子龍山人翻譯..深表感謝..這裡是他們的鏈結

這是英文版鏈結 

1)由於本人實在是懶得離譜,所以從啟動xcode 到成功執行 helloworld 俺就不寫了..跟文章中cocos2d的建立方式一樣

2)刪除helloworld.h和.cpp檔案 也是一樣的.但是建立 「scenemanager」的時候要注意,建立的副檔名是.h和.cpp

小貼士:一定要選對路徑!!都扔classes底下,不然xcode讓你include了,也總是提示「木有找到檔案」!!切記!

3)修改scenemanager.h和 scenemanager.cpp裡的內容

scenemanager.h

#ifndef menu_test_part1_scenemanager_h

#define menu_test_part1_scenemanager_h

#include "cocos2d.h"

#include "menulayer.h"

using namespace cocos2d;

class scenemanager:public ccobject

;#endif

scenemanager.cpp

#include #include "scenemanager.h"

#include "cocos2d.h"

using namespace cocos2d;

void scenemanager::gomenu()

void scenemanager::go(cclayer* layer)

else

}ccscene* scenemanager::wrap(cclayer* layer)

你可能已經注意到了,我們包含了「menulayer.h」檔案,然後在「gomenu」方法中使用了

menulayer。所以,讓我們再建立乙個類,叫 menulayer.h以及它的實現 menulayer.cpp

menulayer.h如下

#ifndef menu_test_part1_menulayer_h

#define menu_test_part1_menulayer_h

#include "cocos2d.h"

using namespace cocos2d;

class menulayer:public cclayer

;#endif

menulayer.cpp 如下

#include #include "cocos2d.h"

#include "menulayer.h"

#include "scenemanager.h"

using namespace cocos2d;

bool menulayer::init()

cclabelttf* titleleft=cclabelttf::labelwithstring("menu", "marker felt", 48); //建立label

cclabelttf* titleright=cclabelttf::labelwithstring("system", "marker felt", 48);

cclabelttf* titlequotes=cclabelttf::labelwithstring("\" ", "marker felt", 48);

cclabelttf* titlecentertop=cclabelttf::labelwithstring("how to build a...", "marker felt", 26);

cclabelttf* titlecenterbottom=cclabelttf::labelwithstring("part 1", "marker felt", 48);

ccmenuitemfont* startnew=ccmenuitemfont::itemfromstring("new game", this, menu_selector(menulayer::onnewgame)); //建立字元型按鈕,注意 menu_selector裡面的寫法!!! 類名::函式名!!!

ccmenuitemfont* credits=ccmenuitemfont::itemfromstring("credits", this, menu_selector(menulayer::oncredites));

ccmenu* menu=ccmenu::menuwithitems(startnew,credits,null);

//將兩個按鈕兒子新增到乙個menu爹上,大頭兒子小頭爸爸不分手

//注意menuwithitem的單複數!!英文是不一樣滴,還有千萬別忘了null

//-----------樓下開始大規模setposition了-----------

titlecentertop->setposition(ccp(160,380));

this->addchild(titlecentertop);

titlecenterbottom->setposition(ccp(160,300));

this->addchild(titlecenterbottom);

titlequotes->setposition(ccp(160,345));

this->addchild(titlequotes);

titleleft->setposition(ccp(80,345));

this->addchild(titleleft);

titleright->setposition(ccp(220,345));

this->addchild(titleright);

menu->setposition(ccp(160,200));

menu->alignitemsverticallywithpadding(40.0f);

//上面這句貌似是讓menu中心對齊

this->addchild(menu);

//總結,以上這些全是 menulayer的node兒子!!!

//這之後,所有的的兒子都加到爹身上了,當執行這個menulayer之後,兒子們就可以按位置顯示了。

//-----------setposition end-------------------------

return true;

}void menulayer::onnewgame(cocos2d::ccobject *psender)

void menulayer::oncredites(cocos2d::ccobject *psender)

//答疑:上面這兩個函式目前的主要功能是點了以後都是gomenu...也就是沒反應,今後的教程,會進一步的新增對應的功能哦

最後,修改

標頭檔案: 把

#include "helloworld.h"

修改為#include "scenemanager.h"

當然,我們還需要修改一些內容。因為所有的「runwithscene」邏輯,現在都被

scenemanager

類所替代,因此,把下面的語句:

ccscene *pscene = helloworld::scene();

這句話不需要了,刪掉,再見吧!!

然後把下面這句,

// run

pdirector->runwithscene(pscene);

替換稱scenemanager::gomenu();

好了!!大功告成了!!編譯執行看看吧!

額..螢幕是橫屏的 所以現在修改

這之中有一句話是,

// sets landscape mode

// pdirector->setdeviceorientation(kccdeviceorientationlandscapeleft);

把第二句的注釋符去掉。然後再編譯執行

額....螢幕反了....大家自己調整 括號裡面的引數給調正吧...

中找到去掉左下角fps顯示的方法..

第一部分就是這些,大家果斷拍磚哦

Cocos2dx 基本內功第一部 基本資料結構

cocos2dx封裝了一些常用的資料結構,我們分為兩個部分介紹。一部分是對基本資料型別,int float double bool的裝箱。一部分是比較複雜的復合資料結構 string array dictionary size rect point 這些資料結構大多數是用c 方式重寫了oc語言中fo...

VBS程式設計教程第一部

發現大部分黑白的朋友都不會程式設計,這可不是件好事,所以這次我就寫了乙個簡單的程式設計教程,講一下vbscript.主要面向菜鳥,懂得程式設計的朋友就不要浪費時間了,如果你想接觸以下vbscript也可以,但既然有程式設計基礎推薦直接去找一些參考書來讀,會比較快.什麼是vbscript呢?vbscr...

cocos2d x學習筆記一選單

恢復內容開始 前沿 cocos2dx誇平台引擎算是越來也受寵了,網遊雖然用這個引擎次了點,但是輕量級的休閒遊戲還是比較靈活的。封裝的動作,選單,場景切換,例子特效等。網上很多教程都是基於1.0的,現在 必須基於1.0跑,所以在這裡筆者從2.0.3開始寫,保證大家能順利執行出來。結構圖如下 ccmen...