2013-07-19 34 views
0

我試圖搜索,但找不到所需的答案,任何人都可以告訴我什麼CCNode的CCTouch事件?正如我們爲CCLayer提供的CCTouchBegan,CCTouchMoved和CCTouchEndedCCNode CCTouch事件cocos2d-X

+0

可有人推薦我的任何人都知道cocos2d-x的網站博客? – Zubair

回答

-2

CCNode無法檢測到觸摸事件。觸摸事件只能由CCLayer檢測到,CCLayer從CCNode繼承,因此它具有CCNode的所有屬性和額外的功能來檢測觸摸事件。

你可以查看我的博客http://www.touchscreenstudio.com/,它是新開始的博客,我將通過帖子發佈所有cocos2d-x東西。

1

CCLayer是CCNode的子類,因此您可以使用所有相同的功能;

像這樣

HelloWorldScene.h 

virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); 
virtual void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); 
virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); 
virtual void ccTouchCancelled(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); 

HelloWorldScene.cpp 

bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){ 
printf("ccTouchBegan"); 

return true; 
} 

void HelloWorld::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){ 
printf("ccTouchMoved"); 
} 
void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){ 
printf("ccTouchEnded"); 
} 
void HelloWorld::ccTouchCancelled(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){ 
printf("ccTouchCancelled"); 
} 
0

你必須繼承CCTouchDeligate類CCNode 看CCLayer :: registerWithTouchDispatcher()在CCLayer.cpp 功能,您可以添加你一起到CCNode的CCTouchDispatcher

CCTouchDispatcher* pDispatcher = CCDirector::sharedDirector()->getTouchDispatcher(); 
pDispatcher->addStandardDelegate(this, 0); 

一旦你做到了這一點,你會獲得回調

void ccTouchesBegan(...), ccTouchesMoved(...), ccTouchesEnded(...) 
1

CCNode的子類也可以接收觸摸事件。

說你的孩子的班級名稱是MyNode。 它具有implement--

  1. CCTouchOneByOneDelegate方法來接收單點觸摸事件。

  2. CCTouchAllAtOnceDelegate以接收多點觸摸事件

注意:您要添加CCNode的這個觸摸功能子層,而該登記層用觸摸調度程序應該不會吞下觸摸。

類接口:

#import <Foundation/Foundation.h> 
#import "cocos2d.h" 
#import "CCProtocols.h" 

@interface MyNode : CCNode <CCTouchOneByOneDelegate,CCTouchDelegate>//Implementing only for single touch events 
{ 
    @private CGSize winSize; 
} 
+(MyNode*) addMyNodeToParentClass:(CCNode*)parent; 

類實現:

​​

如果MYNODE需要實現多點觸控事件實現CCTouchAllAtOnceDelegate的委託方法---

//////////////////////////////////////////////////////////////// 
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

} 
-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

} 
-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

} 
-(void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

}