2013-07-24 63 views
0

始終存在同樣的問題。將cclayer添加到scene -touches出現故障

我有一個場景,我將它添加到CClayer從另一個類,這是他的ccmenu一些背景。 觸摸它時,觸摸會在此層下進行,我不需要它。

otherClass *layer=[otherClass alloc]init]; //otherClass returns a cclayer . 
[self addChild: layer]; 

圖層不錯,並且在我的場景之上,但是觸動下降。 有沒有辦法在cocos2d中啓用只觸摸頂層? 我現在必須改變觸摸優先級嗎?

回答

0

您需要更改觸摸優先級並設置爲swallowsTouches。 要做到這一點,就touchDispatcher設置這些參數的註冊層(你也可以看到CCLayer registerWithTouchDispatcher方法爲例):

[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; 
+1

所有菜單提供了一些使他們未來這一塊的優先級,所以......他們會仍然受到關注。您需要將較低菜單的「已啓用」屬性設置爲false,以防止它們在觸摸上發生作用。此外,您需要爲該流程觸及的層添加「已啓用」屬性,以便在啓用時忽略它們接收的觸摸== NO; – YvesLeBorg

+0

所以你說,當我添加新圖層只是禁用較低的菜單,並再次啓用它們時,我刪除該圖層?問題是,圖層將其自身從父母移除,而較低層在上層移除時不知道它,因此他不能再次啓用他自己。 – Curnelious

+1

嘗試使用委託來通知上層,如layerWillBeRemoved: – Bivis