2017-01-20 2 views
0

어쨌든 처리 할 수 ​​onTouchBegan, onTouchMovedC++ 나는 우리가 쉽게 처리 할 수있는이 버전에서,적인 Cocos2D-X 3.10을 사용하고 onTouchHolding

_touchListener = EventListenerTouchOneByOne::create(); 
_touchListener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchBegan, this); 
_touchListener->onTouchCancelled = CC_CALLBACK_2(GameScene::onTouchCancel, this); 
_touchListener->onTouchMoved = CC_CALLBACK_2(GameScene::onTouchMoved, this); 
_touchListener->onTouchEnded = CC_CALLBACK_2(GameScene::onTouchEnded, this); 

그러나 방법에 대한 onTouchHolding과 같이하여 onTouchEnd, onTouchCancel? 많은 감사의 친구

+0

'begin' '로 시작 end''멈추지 hold'하지 않습니다? – Danh

답변

0

아무 일도 일어나지 않을 때 (즉, 손가락을 움직이지 않음) 이벤트가 발생하지 않으므로 onTouchHolding이 없습니다.

터치가 개최 된 시간을 보려면 onTouchBegan에 플래그를 설정할 수 있습니다. update 메서드에서 해당 플래그가 설정된 경우 멤버 변수를 dt만큼 증가시킵니다. onTouchEnded에서 플래그를 설정 해제합니다. 이 같은

뭔가 :

void GameScene::update(float dt) 
{ 
    if (_touchInProgress) 
    { 
     _holdTime += dt; 
    } 
} 

bool GameScene::onTouchBegan(Touch *touch, Event *event) 
{ 
    _holdTime = 0.0; 
    _touchInProgress = true; 
    return true; 
} 

void GameScene::onTouchEnded(Touch *touch, Event *event) 
{ 
    _touchInProgress = false; 
    if (_holdTime > kMyHoldTimeThreshold) 
    { 
     // Do something awesome 
    } 
}