cocos2d x 如何快速遮蔽觸控

2021-08-26 22:20:59 字數 1015 閱讀 1625

cocos2d-x有個問題,即使暫停sence執行,觸控仍然有效,有些選單和按鈕仍然會被觸發。

所以有的時候我們要手動遮蔽觸控,尤其是在彈出計費畫面的,或者使用一些本平台自帶控制項的時候。

做法有幾種:

第一種方案是:每乙個繼承自cclayer的類都可以關閉觸控,使用這個函式

setistouchenabled(false);

在暫停sence時,我們只需要關閉那些主要的cclayer即可,也就是當前ccscene的主cclayer和相關的ccmenu等。

但這種方法,有時候會造成莫名其妙的crash。除錯發現,如果在同乙個frame的同乙個函式中,先關閉再恢復觸控,就可能造成crash。crash的原因是引擎在派發觸控事件時,發現響應物件的列表為空,直接觸發斷言。

第二種方案是:寫乙個cclayer,把所有優先順序調至最高,並直接覆蓋到當前ccsence主cclayer上。

經過試驗,這種方式非常簡單有效,重用性也很高。

classnotouchlayer:publiccocos2d::cclayer;

boolnotouchlayer::init()

setistouchenabled(true);

returntrue;

}voidnotouchlayer::registerwithtouchdispatcher()

boolnotouchlayer::cctouchbegan(cctouch*ptouch,ccevent*pevent)

voidnotouchlayer::cctouchmoved(cctouch*ptouch,ccevent*pevent)

voidnotouchlayer::cctouchended(cctouch*ptouch,ccevent*pevent)

這個類的使用也很簡單,直接addchild,removechild即可。注意清理,注意addchild的時候要給乙個足夠大的z軸深度值。

cocos2d x如何檢測碰撞

我們的英雄現在可以發射子彈了,但僅僅只是裝飾而已,如何才能殺掉怪物呢?在這一章,我們將介紹碰撞檢測來實現這一效果。首先,跟蹤怪物和子彈是必需的。在遊戲中,我們為這兩種精靈加以不同的tag來區分它們。當tag 1時,表示這是怪物,而tag 2時,則表示這為子彈。由於在ccnode裡面有m ntag這個...

Windows下快速建立cocos2d x專案

準備工作 這裡需要注意的是不能使用最新版本的python 環境建立 1.將cocos2d x 2.1.4釋放到指定目錄下 2.安裝python,並在windows的環境變數path中新增python執行目錄 專案建立 1.開啟windows控制台,進入 cocos2d x原始碼 cocos2d x ...

快速學習 學習cocos2dx之旅(2)

二.建立新專案 首先開啟 cmd輸入命令 cocos 後可以檢視cocos2dx的命令,前提是安裝了python的環境 如下圖所示 接著輸入 cocos new help 或者 cocos new h 檢視如何新建cocos專案的幫助 正如上圖所示的我們想建立乙個新的專案就需要使用這些引數先不管別的...