原创 宏(#define)和類型別名(typedef)在結構和共用體(聯合體)類型定義中的應用

在學習cocos2d-x的過程中,經常看到各種大寫的標識符,有些是自定義的宏,有些是複雜類型的別名。前者用#define來實現,後者用typedef來實現。它們的存在有兩個共同目的(當然還有其他不同的目的),一是用簡單的標識符來代替複雜的

原创 C++ 頭文件的包含

 作爲初學者,經常會對對c/c++頭文件的包含很糾結。這兩天和實驗室的小夥伴們花了點時間研究了一下,在這裏做個總結。 1) 首先,頭文件不是必不可少的,可以用直接寫聲明來取代。 對於小規模項目,只需要一個源文件,所有聲明和定義都放在這一

原创 cocos2d-x: 死磕"HelloWorld"(1)——入口函數及其帶來的疑問

麻雀雖小,五臟俱全。HelloWorld就是一隻小麻雀,但是涵蓋了遊戲製作的基本流程,以及基本的渲染框架。我們的目標就是要通過解剖這隻小麻雀,一窺cocos2d-x遊戲製作全貌。 由於篇幅較長,我們將整個學習過程分爲七篇博文,一篇一個主題

原创 cocos2d-x: 死磕"HelloWorld"(6)——場景渲染的實施

場景入棧後,下一步便可以開始渲染了。之前在第三篇中我們看到run()函數裏調用了一個渲染主函數mainLoop(),該篇便是具體分析該函數。它的定義爲: CCDirector.cpp void CCDisplayLinkDirector:

原创 cocos2d-x: 死磕"HelloWorld"(4)——HelloWorld場景的創建

該篇將分析萬衆矚目的HelloWorld場景是如何出現的。我們在上一篇中已經看到在應用初始化函數applicationDidFinishLaunch

原创 用Android studio創建Cocos2d-x 3.X項目

如果你還在用eclipse那你就out了,Android Studio從1.3版開始支持對C++的編輯(雖然從目前來看用Android Studio來編輯C++還比較蛋疼)。而且Cocos2d-x從3.7版開始優化對android stu

原创 cocos2d-x: 死磕"HelloWorld"(3)——遊戲運行主函數run()

在該篇中,我們將分析遊戲運行主函數run(),看看它都幹了些啥。並且會重點分析其中調用的兩個函數:即應用初始化函數applicationDidFinishLaunching()和渲染主循環函數mainLoop()。但是這兩個函數所調用

原创 cocos2d-x 2.2.2 版新建項目

1. 去python官網下載python(建議2.7版,新版可能不支持)。 2. 打開命令窗口,並將路徑轉到cocos2d-x-2.2.2/tools/project-creator下。這一步也可以通過直接在該文件夾下按shift+鼠標右

原创 cocos2d-x: 死磕"HelloWorld"(5)——場景渲染準備工作

場景創建好之後,下一步便是將場景在屏幕上渲染出來。但是在渲染之前還有一些準備工作,該篇就是分析渲染準備函數runWithScene()。在第三篇中我

原创 cocos2d-x: 死磕"HelloWorld"(2)——應用實例的創建

該篇分析應用實例的創建(構造),並解決第一篇中的前兩個疑問,即 Q1, app對象建立之後去哪了?Q2, 最後是什麼對象在run?我們先來看看A

原创 將Cocos2d-x從iOS平臺移植到Android平臺需要修改的地方

雖然Cocos2d-x是跨平臺遊戲引擎,但是在發佈到不同平臺的時候,還是要根據不同平臺做一些調整。本人喜歡先在Xcode裏面寫代碼,因爲Xcode對C++支持較好(除了代碼Xcode還需要做一些其他設置,相關設置請參考這裏)。在需要發佈到

原创 lambda表達式的實質——什麼是lambda表達式,爲什麼要使用lambda表達式

lambda表達式是C++ 11的新特性。它是一個匿名函數,但是又跟函數不同。要想理解lambda表達式,特別是爲什麼要使用lambda表達,首先要理解回調函數。如果不太理解回調函數請戳這裏。簡而言之,回調函數就是被作爲參數供另一個函數調

原创 Cocos2d-x 3.X, IOS版添加廣點通廣告平臺

蘋果自己的廣告平臺iAD在中國不好使,獲取不到廣告,所以必須搞個本土廣告平臺。首先想到的是廣點通。可是廣點通官方文檔裏沒有針對Cocos2d-x的版本,所以只好自己摸索。在添加過程中確實遇到了不少問題,在這裏將解決方法整理一下,希望能幫助

原创 使用友盟社會化分享安卓android版SDK分享純圖片到微信

本人使用的其實是友盟的Cocos2d-x安卓版。普通安卓版使用方式稍有不同,但是設置分享內容的接口是一樣的。友盟官方文檔中提到過他們支持微信純圖片分享,就是分享一張純圖片,而非一條圖文鏈接,到微信朋友圈,點擊之後變大圖的那種。但是他們並未

原创 Cocos2d-x 3.X裏面的調度器和update()

Cocos2d-x 3.X裏有三種調度器,分別爲默認調度器scheduleUpdate(), 自定義調度器schedule(), 和單次調度器scheduleOnce()。它們都是Node類成員函數。它們又都分別調用了單例模式的Sched