//觸屏事件
virtual bool ccTouchBegan(Touch * touch,Event * event);
virtual void ccTouchMoved(Touch * touch,Event * event);
virtual void ccTouchEnded(Touch * touch,Event * event);
//生命週期
virtual void onEnter();
virtual void onExit();
void Touchdemo::onEnter()
{
//開啓觸屏監聽
Director::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);
Layer::onEnter();//一定不要忘了
}
void Touchdemo::onExit()
{
//關閉觸屏監聽
Director::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
Layer::onExit();//一定不要忘了
}
===========================================================================================
添加委託
addStandardDelegate();
開啓多點觸控(不寫沒有效果哦)
setTouchEnabled();
觸屏事件:
1.註冊多點觸控
virtual void registerWithTouchDispatcher(void);
2.當用戶第一次觸碰手機屏幕時響應的回調函數
virtual void ccTouchesBegan(Set * touchs,Event * event);
3.當用戶手指在手機屏幕上滑動時響應的回調函數
virtual void ccTouchesMoved(Set * touchs,Event * event);
4.當用戶手指在離開手機屏幕上時響應的回調函數
virtual void ccTouchesEnded(Set * touchs,Event * event);
//寫上多點觸控的回調函數
virtual void registerWithTouchDispatcher(void);
virtual void ccTouchesBegan(Set * set,Event * e);
virtual void ccTouchesMoved(Set * set,Event * e);
virtual void ccTouchesEnded(Set * set,Event * e);
//寫上生命週期函數
virtual void onEnter();
virtual void onExit();
註冊監聽
void Touchsdemo::registerWithTouchDispatcher(void)
{
//註冊監聽
Director::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this,0);
}
void Touchsdemo::ccTouchesBegan(Set * set,Event * e)
{
SetIterator iter=set->begin();
//這裏的iter相當於系統分配的數字,
//set->begin()獲取第一個數字
//set->end()就是最後一位
for(;iter!=set->end();iter++){
//這裏呢,就是單點處理了,可以理解爲把多點拆成單點來做
CTouch * mytouch=(Touch *)(* iter);
Point cp=mytouch->getLocation();
//這裏我們對5個觸摸塊進行處理
if(mytouch->getID()==0){
Sprite * sp=(Sprite * )this->getChildByTag(1);
sp->setPosition(cp);
}
if(mytouch->getID()==1){
Sprite * sp=(Sprite * )this->getChildByTag(2);
sp->setPosition(cp);
}
if(mytouch->getID()==2){
Sprite * sp=(Sprite * )this->getChildByTag(3);
sp->setPosition(cp);
}
if(mytouch->getID()==3){
Sprite * sp=(CCSprite * )this->getChildByTag(4);
sp->setPosition(cp);
}
if(mytouch->getID()==4){
Sprite * sp=(Sprite * )this->getChildByTag(5);
sp->setPosition(cp);
}
}
}
void Touchsdemo::ccTouchesEnded(Set * set,CCEvent * e)
{
CCSetIterator iter=set->begin();
int a[6]={0,0,0,0,0,0};//創建一個數組
for(;iter!=set->end();iter++){
Touch * mytouch=(Touch *)(* iter);
Point cp=mytouch->getLocation();
//這裏我們對5個觸摸塊進行處理
if(mytouch->getID()==0){
a[1]=1;
}
if(mytouch->getID()==1){
a[2]=1;
}
if(mytouch->getID()==2){
a[3]=1;
}
if(mytouch->getID()==3){
a[4]=1;
}
if(mytouch->getID()==4){
a[5]=1;
}
}
for(int i=1;i<=5;i++){<>
if(a[i]==1){
Sprite * sp=(Sprite *)this->getChildByTag(i);
sp->runAction(MoveTo::create(5,ccp(30,30)));
}
}
}
//實現生命週期函數
void Touchsdemo::onEnter()
{
Layer::onEnter();
}
void Touchsdemo::onExit()
{
Director::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
Layer::onExit();
}
【Cocos2d-x 3.0學習筆記】觸摸
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.