中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Cocos2d-x 3.X手游開發實例詳解

發布時間:2020-07-08 14:33:31 來源:網絡 閱讀:382 作者:博文視點 欄目:開發技術

Cocos2d-x 3.X手游開發實例詳解(最新最簡Cocos2d-x手機游戲開發學習方法,以熱門游戲2048、卡牌為例,完整再現手游的開發過程,實例豐富,代碼完備,Cocos2d-x作者之一林順和泰然網創始人楊雍力薦

于浩洋 著  

ISBN 978-7-121-23998-4

2014年9月出版

定價:59.00元

356

16

編輯推薦

Cocos2d-x V3.0為框架全面講解手游開發的知識和方法

以熱門游戲2048、卡牌為例,完整再現手游的開發過程

Cocos2d-x作者之一林順和泰然網創始人楊雍力薦

知識點深入淺出,實例豐富,代碼完備

線上交流平臺,及時答疑解惑

內容提要

Cocos2d-x 3.X手游開發實例詳解》以Cocos2d-xV3.0 系列版本為框架,通過實例講解手機游戲的開發知識和方法,著重通過實例提高讀者的開發動手能力。涉及的內容包括:環境搭建、交叉編譯以及打包部署;Cocos2d-x數據類型和基本概念的使用,如場景、導演、精靈等;使用Cocos2d-x 創建用戶界面,如文本、菜單、滾動框等基本控件,以及一些擴展控件的使用;使用Cocos2d-x 創建動作,比如讓精靈移動、跳躍、旋轉,以及如何創建按順序或同時進行的動作;使用Cocos2d-x 播放、停止、暫停、繼續播放背景音樂和音效;Cocos2d-x 使用的觸摸事件機制;在游戲中存儲數據的幾種方式;使用HTTPSocketsWebSockets 進行網絡編程;在游戲中使用物理引擎Box2D、使用瓷磚地圖、使用CocosBuilder 制作游戲界面等;Cocos2d-x 中的紋理和動畫。最后通過兩個完整的游戲開發實例講解使用Cocos2d-x 開發游戲的全過程。

Cocos2d-x 3.X手游開發實例詳解》實例豐富,代碼完備,知識點清晰簡潔。《Cocos2d-x 3.X手游開發實例詳解》所有實例均提供完整代碼下載,書后附有代碼清單概要,非常方便讀者查找使用。此外作者還將Cocos2d-x 3.X 各版本間的區別用實例做了詳細說明,且將在博客不斷更新。

Cocos2d-x 3.X手游開發實例詳解》適合對Cocos2d-x感興趣及有志于學習和從事移動平臺游戲開發的讀者閱讀參考。

目錄

1  準備     1

1.1  Cocos2d-x簡介     1

1.2  Cocos2d-x架構和目錄結構     6

1.3  環境搭建     7

1.3.1  Windows開發環境搭建     7

1.3.2  Mac開發環境搭建     11

1.3.3  創建新項目     12

1.3.4  Android上調試項目     14

1.3.5  打包APK文件     22

2  Cocos2d-x常用數據和方法     23

2.1  C++數據類型     23

2.2  Cocos2d-x封裝的數據類型     24

2.2.1  布爾型Bool的使用     24

2.2.2  整型Integer的使用     25

2.2.3  浮點型DoubleFloat的使用     25

2.2.4  字符串String的使用     25

2.2.5  數組Array的使用     26

2.2.6  Point的使用     27

2.2.7  尺寸Size的使用     28

2.2.8  矩形Rect的使用     29

2.2.9  字典Dictionary的使用     31

2.3  常用宏定義     32

2.3.1  數學相關宏的使用     32

2.3.2  斷言宏CCAsset的使用     33

2.3.3  數組遍歷宏CCARRAY_FOREACHCCARRAY_FOREACH_REVERSE的使用     33

2.3.4  字典遍歷宏CCDICT_FOREACH的使用     35

2.3.5  對象創建方法宏CREATE_FUNC的使用     36

2.3.6  屬性定義宏CC_PROPERTY的使用     37

2.3.7  命名空間宏     39

2.4  Cocos2d-x中的坐標和坐標系     39

2.4.1  OpenGL坐標系和屏幕坐標系     39

2.4.2  錨點和位置的使用     40

2.4.3  節點坐標系和世界坐標系的相互轉換     42

3  Cocos2d-x核心概念     45

3.1  基礎節點     46

3.1.1  Node簡介     46

3.1.2  Node應用舉例之移除節點     47

3.2  相機     47

3.2.1  相機簡介     47

3.2.2  使用CCCamera循環縮放點     48

3.3  導演     49

3.3.1  導演Director簡介     49

3.3.2  Director常用功能舉例     50

3.4  場景     51

3.4.1  場景定義     51

3.4.2  創建顯示戰斗場景     52

3.4.3  動態切換多個場景     53

3.5  布景     56

3.5.1  布景定義     56

3.5.2  使用Layer模擬Windows Phone主界面     57

3.6  精靈     59

4  Cocos2d-x用戶界面     61

4.1  文本渲染     61

4.1.1  制作fnt格式字體     62

4.1.2  使用LabelBMFont顯示文本     66

4.1.3  使用LabelTTF顯示文本     67

4.1.4  使用LabelAtlas顯示文本     70

4.2  菜單     71

4.2.1  菜單和菜單項的簡單使用     72

4.2.2  使用菜單制作游戲菜單功能     74

4.3  滾動框     80

4.3.1  使用ScrollView顯示多頁內容     80

4.3.2  監聽ScrollView的滾動和縮放事件     82

4.3.3  使用TableView展示多頁內容     83

4.3.4  觸摸TableView里的菜單來滾動TableView   86

4.4  擴展控件     87

4.4.1  滑動條控件ControlSlider  87

4.4.2  開關控件ControlSwitch  90

4.4.3  取色器控件ControlColourPicker  92

4.4.4  電位計控件ControlPotentiometer  94

4.4.5  步進器控件ControlStepper  95

4.4.6  按鈕控件ControlButton  96

4.4.7  Scale9Sprite  99

4.5  使用編輯框制作用戶登錄界面     100

5  Cocos2d-x動作     105

5.1  動作分類     105

5.2  瞬時動作     106

5.2.1  使用FlipX/FlipY實現X/Y翻轉     106

5.2.2  使用HideShow實現隱藏和顯示     108

5.3  延時動作     109

5.3.1  使用MoveTo或者MoveBy實現移動     109

5.3.2  使用RotateToRotateBy實現旋轉     110

5.3.3  使用JumpToJumpBy實現跳躍     113

5.3.4  使用ScaleToScaleBy實現縮放     114

5.3.5  使用SkewToSkewBy實現傾斜變形     115

5.3.6  使用CardinalSplineByCardinalSplineTo實現曲線運動     117

5.3.7  使用FadeInFadeOut實現漸隱漸出     119

5.4  聯合動作     120

5.4.1  按先后順序執行動作     120

5.4.2  同時執行動作     121

5.4.3  逆向執行動作     122

5.4.4  多次重復執行動作     123

5.4.5  延時執行動作     124

6  音頻處理     125

6.1  音頻處理類SimpleAudioEngine  125

6.2  添加控制背景音樂     126

6.2.1  播放背景音樂并調整音量     126

6.2.2  停止播放背景音樂     128

6.2.3  暫停播放背景音樂     128

6.2.4  繼續播放背景音樂     128

6.3  添加控制音樂效果     129

6.3.1  播放音樂     129

6.3.2  停止播放音樂     131

6.3.3  暫停播放音樂     131

6.3.4  繼續播放音樂     131

6.3.5  停止、暫停、繼續播放所有音樂     132

6.4  Cocos2d-x支持的音頻格式     133

7  Cocos2d-x瓷磚地圖     135

7.1  什么是瓷磚地圖     135

7.2  使用Tiled制作瓷磚地圖     137

7.2.1  安裝Tiled  137

7.2.2  制作地圖     138

7.3  在游戲中使用瓷磚地圖     140

7.3.1  使用TMXTiledMap把瓷磚地圖加載到游戲中     140

7.3.2  拖曳TMX地圖     141

7.3.3  TMX地圖中添加并移動精靈     142

7.3.4  讀寫TMX地圖中的圖層和瓷磚     143

8  Cocos2d-x中的事件機制     146

8.1  事件和事件調度     147

8.2  觸摸事件     149

8.2.1  單點觸摸事件的類和方法     149

8.2.2  單擊屏幕移動精靈     150

8.2.3  拖動精靈移動     152

8.2.4  修改監聽器的優先級     154

8.2.5  多點觸摸事件     156

8.2.6  使用多點觸摸實現縮放     157

8.3  鼠標事件     159

8.4  鍵盤事件     159

8.4.1  鍵盤事件介紹     159

8.4.2  實例:把鍵盤輸入內容顯示在屏幕中     160

8.5  加速計     161

8.5.1  加速計介紹     161

8.5.2  實例:利用加速計控制小球移動     162

9  Cocos2d-x本地數據存儲     165

9.1  使用UserDefault存儲數據     165

9.1.1  UserDefault介紹     165

9.1.2  使用UserDefault存儲修改數據     167

9.2  文件     169

9.2.1  文件處理類FileUtils  169

9.2.2  判斷文件是否存在     169

9.2.3  設置文件別名     170

9.2.4  獲取文件完整路徑     172

9.2.5  設置文件搜索路徑     174

9.2.6  根據分辨率調用不同的資源     175

9.2.7  向文件中寫入數據     176

9.2.8  從文件中讀取數據     179

9.2.9  把數據寫入plist文件     180

9.2.10  plist文件讀取數據     182

9.3  SQLite存儲     183

9.3.1  SQLite簡介     183

9.3.2  可視化管理工具SQLiteStudio  185

9.3.3  使用SQLiteStudio添加數據庫     186

9.3.4  使用SQLiteStudio添加表和數據     188

9.3.5  使用C語言接口操作SQLite數據庫     190

9.3.6  不使用回調查詢SQLite數據庫     194

10  網絡編程     197

10.1  HTTP實現網絡通信     198

10.1.1  HTTP通信簡介及常用類     198

10.1.2  GET方式通信     200

10.1.3  POST方式通信     203

10.2  Socket實現網絡通信     204

10.2.1  Socket簡介     204

10.2.2  Cocos2d-x中使用Socket  205

10.3  WebSocket實現網絡通信     209

10.3.1  WebSocket簡介     209

10.3.2  Cocos2d-x中使用WebSocket  210

11  物理引擎Box2D   215

11.1  Box2D簡介     216

11.2  創建Box2DHelloWorld項目     217

11.2.1  創建一個世界     217

11.2.2  創建一個地面物體     217

11.2.3  創建一個動態物體     219

11.2.4  模擬(Box2D的)世界     219

11.2.5  清理工作     221

11.3  世界b2World  221

11.3.1  b2World簡介     221

11.3.2  世界常用功能     222

11.4  物體b2Body  225

11.4.1  b2Body簡介     225

11.4.2  物體定義     226

11.4.3  創建物體     228

11.4.4  使用物體     229

11.5  固定裝置b2FixtureDef 231

11.5.1  b2FixtureDef簡介     231

11.5.2  創建b2FixtureDef 231

11.6  關節     234

11.6.1  關節簡介     234

11.6.2  關節定義     235

11.6.3  創建關節     235

11.6.4  關節類型和使用關節     236

11.7  接觸     242

11.7.1  接觸簡介     242

11.7.2  接觸監聽器     243

11.7.3  接觸篩選     244

12  紋理和動畫     246

12.1  渲染和修改紋理     246

12.1.1  紋理類Texture2D   247

12.1.2  Cocos2d-x支持的紋理格式     249

12.1.3  Cocos2d-x支持的最大紋理尺寸     249

12.1.4  使用RenderTexture保存截屏     250

12.1.5  圖片抗鋸齒處理方式     251

12.1.6  使用圖片緩存     253

12.1.7  制作游戲加載場景     254

12.1.8  使用TexturePacker制作Sprite Sheet  256

12.2  動畫     258

12.2.1  幀動畫     258

12.2.2  使用幀動畫實現英雄打斗     259

12.2.3  Sprite Sheet動畫     266

12.2.4  骨骼動畫     268

12.2.5  使用CocoStudio制作骨骼動畫     269

12.2.6  在項目中調用CocoStudio制作的骨骼動畫     273

13  使用Cocos2d-x制作2048休閑游戲     275

13.1  準備工作     275

13.2  使用CocoStudio制作UI界面     276

13.3  編寫邏輯代碼     279

13.3.1  UI界面添加到游戲界面中     279

13.3.2  添加獲取分數控件并設置分數     281

13.3.3  添加數字方塊類     281

13.3.4  初始化游戲數據     282

13.3.5  添加按鈕功能     284

13.3.6  添加事件監聽     285

13.3.7  實現方塊上下左右移動     287

13.3.8  添加新的數字塊     290

13.3.9  判斷游戲是否結束     291

13.3.10  添加游戲介紹界面     293

14  使用Cocos2d-x制作水滸卡牌游戲     294

14.1  準備工作     294

14.2  定義游戲數據結構和存儲單例     295

14.3  添加登錄界面     299

14.4  添加游戲主場景     305

14.5  添加游戲首頁     307

14.6  添加英雄卡牌列表界面     311

14.7  添加戰斗流程     314

14.8  添加戰斗界面     319

14.9  終結     323

附錄實例代碼清單說明     324

附錄B  Cocos2d-x 3.X主要版本間的區別     328

精彩節摘

14.7  添加戰斗流程

戰斗是卡牌游戲的靈魂,有了喜歡的英雄,給英雄裝備一套好的裝備,這時不拿出來用用多沒意思啊!戰斗讓你的英雄久經沙場,變得更強更偉大。該游戲中的戰斗流程是,單擊戰爭菜單,首先進入世界地圖,如圖14-5所示,單擊世界地圖上的某個勢力范圍,進入該勢力范圍的推圖,再單擊其中一個推圖進入戰斗場景。

世界地圖通過GameMapLayer實現。在GameMapLayer初始化中,添加一個ScrollView,用來滾動顯示隱藏的地圖:

ui::ScrollView* dragPanel = ui::ScrollView::create();

設置dragPanel的大小為窗口大小:

Size widgetSize =Director::getInstance()->getWinSize();

dragPanel->setSize(widgetSize);

設置dragPanel的內容大小為640×1920

 Size backgroundSize =Size(640,1920);

dragPanel->setInnerContainerSize(backgroundSize);

設置位置添加到場景中:

dragPanel->setPosition(ccp((widgetSize.width -backgroundSize.width) / 2, (widgetSize.height - backgroundSize.height) / 2 +
(backgroundSize.height - dragPanel->getContentSize().height) / 2));

 

m_pLayer->addChild(dragPanel);

世界地圖是用CocosStudio制作的UI,這里省略詳細的制作過程,因為上一個實例已經詳細講解了CocosStudio怎制作UI。我們把UI添加到dragPanel中:

Layout* map_root =dynamic_cast<Layout*>(GUIReader::shareReader()->widgetFromJsonFile("GameMapLayer_1.json"));

dragPanel->addChild(map_root);

然后定義一個數組,代表勢力范圍的名稱:

string str[21] ={"yananfu","shijiachun","shimiao","yezhulin","changzhou","hunxian","erlongsan","qingzhou","jiangzhou","liangsan","zhujiazhuang","beijing","chengtou","dongpingfu","dongjing","liangsan","jizhou","shuzhou","hangzhou","guanfu"};

通過一個for循環遍歷UI地圖中的Button,并為Button添加名稱和回調函數:

for (unsigned int i = 0; i<20; ++i)

    {

        Button* button =(Button*)(map_root->getChildByTag(i));

button->setTitleFontSize(32);

button->setTitleColor(Color3B(255,0,0));

button->setTitleText(str[i].c_str());

button->addTouchEventListener(this,toucheventselector(GameMapLayer::buttonTouchEvent));

}

在回調函數buttonTouchEvent中,先獲取單擊Buttontag和現在的等級:

voidGameMapLayer::buttonTouchEvent(Ref *pSender, TouchEventTypetype)

{

    Size winSize=Director::getInstance()->getWinSize();

    Sprite*bg=Sprite::create("tipbg.png");

    Button*pHome=(Button*)pSender;

int tag=pHome->getTag();

int level=GameData::shareGameData()->mlevel;

switch (type)

    {

case TOUCH_EVENT_BEGAN:

break;

 

case TOUCH_EVENT_MOVED:

break;

 

case TOUCH_EVENT_ENDED:

            ....進行操作....

break;

case TOUCH_EVENT_CANCELED:

break;

 

default:

break;

    }

}

然后在TOUCH_EVENT_ENDED中判斷等級是否大于等于tag*5-10,如果是就進入推圖場景:

if(level>=tag*5-10)

           {

FightLayer *info=new FightLayer(tag);

addChild(info);

            }

這時,運行程序,單擊世界地圖中最上面的勢力,進入推圖場景,如圖14-6所示。

作者簡介

于浩洋:曾就職于阿里巴巴、人人網,從事多年互聯網產品開發工作。守望科技工作室創始人,我博輕游科技有限責任公司CTO,參與主導多款卡牌手游的開發與發行,有豐富的手游開發經驗。

媒體評論

手游是個很有前景的行業,同時也是個競爭異常激烈的行業。為了在競爭中立于不敗之地,必須有可靠先進的技術和技術人才。此書以Cocos2d-x 3.0為基礎,從入門知識到高級進階,詳細講解了手游開發的十幾個大模塊,每個大模塊又包含了許多小的知識點,是提高技術水平不可多得的一本書。

林順

觸控科技高級技術總監,Cocos2d-js作者

本書是由從業多年的開發者于浩洋所著,多年的互聯網巨頭從業經驗使得作者形成了比較扎實的知識體系。書中對基礎知識娓娓道來,同時全書包括多個實例講解。大量的實例,讓所有知識深入淺出,不論你是有從業經驗的中級開發者還是初次使用Cocos2d-x的小白用戶,本書都是不錯的選擇。

楊雍

泰然網創始人,Cocos2d-x技術推廣總監

前言

記得第一次接觸移動互聯網是在2008年左右,當時互聯網應用相當普及,市場競爭進入紅海,絕大多數人認為移動互聯將成為下一個增長點,是很大的藍海,社會將進入3G時代。大到三大運營商和一線互聯網公司,小到小公司和個人開發者都想進入移動互聯,從3G大蛋糕中分到一塊利益。轉眼幾年過去,正如當時預料的那樣,移動互聯已經深入人們的生活當中,4G也悄悄來臨。在移動互聯的發展過程中,蘋果公司起到了不可磨滅的作用,因為它發布了能承載移動互聯功能的新概念智能手機iPhone。于是乎,誕生了一大批移動應用和移動游戲的開發商和個人開發者。其中以《瘋狂的小鳥》為代表的第一批手機游戲進入人們的視線并大獲成功,之后手機游戲以比雨后春筍還瘋狂很多倍的速度成長起來。各種類型的游戲出現在市場中,例如《我叫MT》《大掌門》《找你妹》及騰訊的天天游戲系列。

在手機游戲快速成長的過程中,手機游戲開發框架也跟著發展起來,其中最著名的就是Cocos2d家族,Cocos2d-iphoneCocos2d-jsCocos2d-java等,其中Cocos2d-iphone使用數最多。但是Cocos2d-iphone是用Objective-C開發的,只能用于開發iPhone平臺的游戲,如果想發布到Android平臺,就要使用另外一種語言,幾乎重寫所有代碼。于是,中國有位叫王哲的“大神”,使用C++重新實現了一遍Cocos2d-iphoneAPI,使用C++開發的游戲不僅效率高,也能發布到iOSAndroidinLinux等多個平臺,真正實現了編寫一次、多平臺運行的目的。

Cocos2d-x 3.0系列統一修改了類和接口(比如把類前面的CC去掉),使代碼更規范、更美觀。3.0系列重寫了紋理渲染方式,不再會產生成倍消耗內存的情況,使游戲運行效率更高、更穩定。本書以Cocos2d-x 3.0版本為基礎,記錄整理了筆者在學習和使用Cocos2d-x中遇到的問題和常用功能,以實踐為主,著重提高讀者的動手開發能力,讓讀者從入門手游的菜鳥成為游戲開發界的大神。

本書的主要內容如下。

1章介紹Cocos2d-x的優缺點和目錄結構,本書案例需要的環境搭建、交叉編譯以及打包部署。

2章講解了Cocos2d-x中常用的數據類型和方法及一些宏定義。

3章講解了Cocos2d-x的基本概念,即基礎節點Node、相機、導演、場景、布景、精靈。

接著由淺入深,第4章講解了如何使用Cocos2d-x創建用戶界面,如文本、菜單、滾動框等基本控件,以及一些擴展控件,如取色器、計步器、復選框等。

之后筆者用很多篇幅在第5章講解了使用Cocos2d-x創建動作的方式,因為動作在游戲中是必不可少的重中之重,內容包括移動、跳躍、旋轉等簡單動作,以及按順序執行或同時執行的復雜動作。

音樂在游戲中也不可或缺,好的音效給人耳目一新的感覺,本書第6章講解了使用Cocos2d-x播放、停止、暫停、繼續播放背景音樂和音效。

7章介紹了瓷磚地圖相關的內容,包括瓷磚地圖的概念、如何制作瓷磚地圖,如何在游戲中使用、操作瓷磚地圖等。

8章講解了Cocos2d-x中的事件機制,包括觸摸事件、鼠標事件、鍵盤事件,以觸摸事件為主要內容。智能手機大多數都是觸摸屏,要監聽用戶的觸摸行為,然后調用相應的行為動作,Cocos2d-x提供了一套觸摸事件機制,并且3.0系統重寫了該機制,使監聽用戶觸摸行為更加方便快捷,同時Cocos2d-x還支持多點觸摸機制,增加玩家與手機的交互樂趣。

除此之外,進行游戲時還產生很多數據,這些數據有時需要保存下來以便下次使用,所以第9章介紹了多種保存數據的方式,比如UsderDefaultPlist、本地數據庫SQLite等。

當開發網絡游戲時,客戶端要不斷地跟服務端進行數據交換,第10章講解了如何使用HTTPSocketsWebSockets進行網絡編程。

11章介紹了物理引擎,它可以使游戲更加接近現實世界,給玩家更真實的體驗。

12章講解了紋理和動畫,介紹了紋理的渲染方式并提供了幾個提高渲染效率的方法。動畫部分講解了如何在游戲中播放幀動畫、plist動畫和骨骼動畫。書中還穿插介紹了一些工具的使用方法,比如使用bitmap font generator制作自定義字體,使用TiledMap Editor制作編輯瓷磚地圖,使用SQLiteStudio管理SQLite數據庫,使用CocoStudio制作編輯UI、動畫、場景等。

13章講解了休閑游戲2048的完整開發過程,核心內容包括使用CocoStudio制作UI界面,UI界面與邏輯代碼的交互,使用UserDefault存取游戲數據,數字方塊移動、合并的邏輯等。

14章講解了水滸卡牌游戲的完整開發過程,挑選了其中幾個典型的功能進行了詳細講解,包括登錄界面、公共菜單、游戲首頁、英雄列表、地圖、推圖和戰斗界面等。本章內容對于游戲開發人員具有很高的參考價值。

本書所有實例代碼在附錄A中有詳細說明,讀者可到博文視點網站下載,地址:www.broadview.com.cn/23998

附錄B詳細介紹了Cocos2d-x 3.X主要版本間的區別,用實例詳細說明各個功能點的使用方法。

最后衷心感謝讀者的支持,如果有問題或想法可以到博客上留言交流,我的博客是http://blog.watchtech.net

 

于浩洋

Cocos2d-x 3.X手游開發實例詳解

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

静海县| 平江县| 定南县| 麻城市| 仙桃市| 石柱| 西乡县| 建阳市| 离岛区| 武穴市| 峨山| 濮阳县| 开鲁县| 金华市| 西充县| 兴和县| 青岛市| 沅江市| 邵东县| 美姑县| 佛坪县| 特克斯县| 探索| 司法| 台湾省| 油尖旺区| 富源县| 富川| 汨罗市| 襄樊市| 龙游县| 玉田县| 灌阳县| 呼伦贝尔市| 佳木斯市| 板桥市| 远安县| 南投市| 兖州市| 界首市| 大荔县|