我在Cocos2dx中需要一些关于这些问题的想法
如何防止用户持续触摸。例如,我连续射击子弹,即使我连续按下触摸,我也希望延迟大约1秒。我的意思是持续触摸不要触摸并按住。
如何检测保持触摸事件?
答案 0 :(得分:1)
1:当你的子弹开火时你可以设置一个布尔值(例如bulletPassing)来通知你应该忽略触摸(你在ccTouchBegan方法中使用它)。然后你创建一个动作,当一秒钟过去时会通知你。假设您的类名为MyLayer,并且您有一个函数bulletDelayPassed,它将为您设置布尔值:
bool ArmourTest::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){
if( !bulletPassing ){
this->runAction( CCSequence::create( CCDelayTime::create(1),
CCCallFunc::create(this, callfunc_selector(MyLayer::bulletDelayPassed)), NULL) );
bulletPassing = true;
shootBullet();
}
isTouching = true;
...
}
void MyLayer::bulletDelayPassed(){
bulletPassing = false;
}
2:最好的方法是创建一个布尔值来告诉你触摸是活动的(例如isTouching),你在ccTouchBegan方法中将其设置为true,在ccTouchEnded中设置为false。如果您需要测量触摸的持续时间,您应该安排更新并更新在ccTouchBegan中设置为0的时间变量,并且只有在触摸布尔值为true时才更新它:
void MyLayer::update( float dt ){
if( isTouching ) touchDuration += dt;
}