原创 護盾的實現

在遊戲中,由於大多的船的都是長方形的,所以把護盾做成了橢圓,而不是圓,另外也再護盾的外圍增加一個護盾的持續時間的一個計時器。效果: 所以,這裏當敵人的子彈發射過來時,要在護盾邊上觸發(也就是橢圓的邊上)。 class ProtectBo

原创 獎勵小功能

首先當敵人被擊毀時根據隨機數判斷是否出現一個獎勵。以下代碼簡單,就不做多解釋 void Enemy::doHurt() { float percentage = this->_hp / this->_sourceHp; if(Conf

原创 cocos2d-x入口類

上一篇文章中有一個在棧中創建的實例——AppDelegate,這個類的初始化使cocos2d-x的程序可以運行起來。因爲它是繼承於CCApplication類,而運行的run方法就是在此類中實現的。 class CC_DLL CCAppl

原创 cocos2d-x在Android的運行流程始末

由於Android的應用層是從Activity開始的,也就是創建完一個Cocos2dx後src文件夾下的Java文件。其中主要看Activity創建時的操作: protected void onCreate(Bundle save

原创 cocos2d-x中層和菜單的觸摸控制

首先是層CCLayer,其實CCLayer已經繼承了觸摸委託類了 class CC_DLL CCLayer : public CCNode, public CCTouchDelegate, public CCAccelerometerDe

原创 cocos2d-x中的動作分析

在cocos2d-x中動作的執行調度是受cocos2d-x的全局定時器控制的,當初始完導演後便已經啓動用於管理動作的update定時器。 bool CCDirector::init(void) { ... m_pActionMa

原创 C++中的const關鍵字

C++中的const關鍵字的用法非常靈活,可以極大改善程序的健壯性,故此總結一下該關鍵字的主要用法。 1. 用於定義常量: const int var = 1; int const var = 1; 用途:var的值是不可改變的。 2

原创 cocos2d-x的主循環和導演類

繼上一篇文章中講到,當cocos2d-x遊戲加載完場景後,便將程序的擁有權交給導演類的主循環去控制,這樣可以讓遊戲不斷的處理和監聽用戶的輸入,處理和監聽定時的事件和繪圖渲染等。 主循環會每幀調用一次(默認是每秒60幀,即一秒調用60次這個

原创 cocos2d-x獨立於場景的節點

在之前的文章中提及過在主循環執行渲染操作時會單獨渲染一個特殊的節點——通知節點(NotificationNode)。 void CCDirector::drawScene(void) { ... //處理通知節點

原创 cocos2d-x的場景類和生命週期

在上一篇的文章已經通過代碼分析了場景的跳轉是在主循環中setNextScene進行調用的,那麼在跳轉時便會開始調用生命週期函數。主要由以下四個函數組成 onEnter、onEnterTransitionDidFinish、onExitTr

原创 cocos2d-x項目的開始

環境:win7+vs2010 版本:2.2.2 在win32平臺的環境中,是從傳統的main函數開始執行的。打開cocos2d-x引擎根目錄\projects\你的項目\proj.win32文件夾中的main.cpp int APIEN

原创 “家園”完成後的反思

陸陸續續地寫了兩個月終於把這個小遊戲的整體外殼給搭建完了,當然其中有很多很多的不足以及需要改善的地方,所以就有了這篇反思的文章。 1)這是一個射擊類的遊戲,市場上擁有大把的這類遊戲,但是他們有一個共同的特點就是其操作都通過點移觸控來操作主

原创 cocos2d-x的內存管理和CCObject類

在這裏要先明白cocos2d-x內存管理的來源。因爲cocos2d-x是將cocos2d重寫了一遍,內存管理也是和cocos2d一樣,通過引用計數來控制。其實現是在cocos2d-x的基類CCObject中,所以要弄懂cocos2d-x

原创 BSD Socket

以下內容均來自於維基百科。(http://zh.wikipedia.org/wiki/%E4%BC%AF%E5%85%8B%E5%88%A9%E5%A5%97%E6%8E%A5%E5%AD%97) Berkeley 套接字(也稱爲BS

原创 cocos2d-x的定時器分析

在cocos2d-x遊戲的主循環中,只用了三行語句便完成了整個引擎的調度系統,十分優雅。 void CCDirector::drawScene(void) { ... //處理定時器的調用 if (! m_bPa