cocos2d 如何實現模態對話方塊

2021-09-25 20:04:30 字數 1151 閱讀 8202

問題描述:

在顯示一些類似於模態對話方塊的視窗時,我們可能需要遮蔽touch事件,不讓在彈出框下面的介面響應touch事件。

而彈出框上某些區域,或者按鈕可以響應touch事件。

解決方案:

1> 給彈出框新增帶吞噬能力的touch**功能。

[[cctouchdispatcher shareddispatcher] addtargeteddelegate:self priority:kccmenutouchpriority + 1 swallowstouches:yes];

注意:a>:**是會被retain的。所以使用完後務必要移出。

[[cctouchdispatcher shareddispatcher] removedelegate:self];

b>:priority其值越小,越是會優先響應touch事件。

這裡使用kccmenutouchpriority + 1 既該介面的響應優先順序比選單按鈕優先順序低。如果你希望又最高的優先順序最好使用int32_min+1

2> 實現**方法cctouchbegan:返回yes表示吞噬touch事件,則其他**都不收到該事件了。

- (bool)cctouchbegan:(uitouch *)touch withevent:(uievent *)event

如果需要在某個區域內可以響應touch事件,則可以新增如下**

- (bool)cctouchbegan:(uitouch *)touch withevent:(uievent *)event

cgrect arect = cgrectmake(50, 50, 50, 50);

cgpoint touchpoint = [touch locationinview:[touch view]];

touchpoint = [[ccdirectorshareddirector

] converttogl: touchpoint];

return !cgrectcontainspoint(arect, touchpoint);

}如果你希望除了選單按鈕以外的區域都不響應touch事件你也可以這樣寫:

- (bool)cctouchbegan:(uitouch *)touch

withevent:(uievent *)event

returnyes;}

cocos2d實現語音 Cocos2d 聲音API

param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...

Cocos2D研究院之初識Cocos2d(二)

在正式介紹cocos2d之前,我先囉嗦一下本人對這套引擎的看法。我認為coos2d最大的作用就是降低開發成本 貌似所有引擎都是這樣 對於研發部門來說,最大的成本就是時間,所以節省時間是降低成本最有效的方式,cocos2d幾乎封裝了所有開發ios遊戲需要的底層 使剛剛接觸oc的開發者也能很快的製作出效...

Cocos2D研究院之初識Cocos2d(二)

在正式介紹cocos2d之前,我先囉嗦一下本人對這套引擎的看法。我認為coos2d最大的作用就是降低開發成本 貌似所有引擎都是這樣 對於研發部門來說,最大的成本就是時間,所以節省時間是降低成本最有效的方式,cocos2d幾乎封裝了所有開發ios遊戲需要的底層 使剛剛接觸oc的開發者也能很快的製作出效...