如何在cocos2d-x中使用LongPress

时间:2014-03-03 08:45:23

标签: objective-c cocos2d-x

我想要我触摸精灵精灵1,精灵2移动。当touchEnd,sprite2 stopAction。

void GameScene:: ccTouchesBegan( cocos2d::CCSet * touches, cocos2d::CCEvent * event ){
    CCTouch *touch = (CCTouch *)touches->anyObject();
    CCPoint location = touch->getLocationInView();
    CCPoint convertedlocation = CCDirector::sharedDirector()->convertToGL(location);
    if (turnUp->boundingBox().containsPoint(convertedlocation)) {
        this -> turnUpClick();
    }
    if (turnDown->boundingBox().containsPoint(convertedlocation)) {
        this -> turnDownClick();
    }
    if (turnLeft->boundingBox().containsPoint(convertedlocation)) {
        this -> turnLeftClick();
    }
    if (turnRight->boundingBox().containsPoint(convertedlocation)) {
        this -> turnRightClick();
    }
}

1 个答案:

答案 0 :(得分:0)

首先,有两件事可以改进你的代码(就cocos2dx而言)

  1. 您(可能)不需要此方法的多点触控版本,因为此代码中没有任何内容可以提示。除非您将来实际使用多点触控。单点触控版本为ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)

  2. 您应该考虑使用CCMenu,因为如果您有很多按钮,它将帮助您维护代码。此外,考虑到您想要注册两个事件(触摸和触摸),您也可以查看CCControlButton。

  3. 解决手头的问题:

    根据您的代码片段,您应该在您指定的方法中开始相应的操作,然后在ccTouchEnded中,您应该致电sprite2->stopAllActions()(当然,sprite2应该是变量的真实名称。)

    如果有什么不清楚,请告诉我。