2012-09-03 33 views
0

想象一下CCLayer子類Block的三個實例彼此相鄰。每個都是100x100像素,並有一些基本的方形背景。這三個對象是被稱爲Container的子類的封裝CCLayer的一部分。跨多個CCLayers滑動

我該如何滑過三個塊並檢測容器中每個塊的輕掃/輕擊/觸摸?

如果問題僅限於處理Block中的水龍頭Container,那麼可以使用委託。類似BlockDelegate與所需的方法userTappedBlock:(Block *) b這將通知Container每當Block被點擊。

但是,這種方法還沒有用於滑動。我在Container中獲得回調,但僅在第一個Block被挖掘。

回答

1

您可以處理包含塊的圖層中的接觸。然後,在touchEnded:WithEvent:方法檢查哪些塊包含觸摸的位置。

+0

喜歡的東西,將工作這種方法。雖然我想我會在touch層上檢查touchMoved和touchEnded。無論如何,我只是認爲這將是很好的塊爲我做觸摸檢測。 – SundayMonday

+0

不要認爲這是需要的。例如,看看CCMenu是如何實現的。所有的觸摸處理菜單,而不是項目。 – Morion

0

在CustomLayer.cpp寫敲擊層

無效CustomLayer :: ccTouchesBegan(CCSet * pTouches,CCEvent * pEvent)

{

 CCTouch *touch = (CCTouch *) pTouches->anyObject(); 
    CCPoint location = touch->getLocationInView(); 
    location = CCDirector::sharedDirector()->convertToGL(location); 

     if(layer->boundingBox().containsPoint(location)) 
       CCLog("layer Hit Test"); 


}