Je trouve la réponse here
Comme le lancement de l'iPhone/6s 6s plus, une nouvelle technologie appelée 'Touch 3D' est introduit. Le jour où j'ai eu mon nouvel iPhone 6s, j'ai testé mon jeu dessus.
Tout fonctionne très bien pour moi, mais: 1. Parfois, les événements tactiles ne fonctionnent tout simplement pas. 2. Parfois, les événements tactiles fonctionnent de manière ridicule.
Après une semaine de prise de problème, je trouve enfin: La fonction de 'onTouchMoved' sera appelée parfois même si l'emplacement tactile en 2D ne change pas. Oui, l'emplacement tactile est maintenant en 3D. Et l'emplacement tactile dans la dimension z est extrêmement sensible (en comparaison avec les dimensions x et y). Une très légère force appliquée de votre doigt à l'écran pourrait amener l'emplacement tactile à changer de dimension z et faire que le moteur de jeu (cocos2d-x) appelle la fonction de 'onTouchMoved'.
Cependant, la dernière version de cocos2d-x (jusqu'au jour de publication de ce sujet: 2015/10/25) n'a pas encore supporté 3D Touch. Vous ne pouvez donc pas accéder à la dimension z, mais être dérangé par celle-ci. Si une partie de votre logique de jeu ne se préoccupe que si l'emplacement tactile a changé en 2D, la fonction de 'onTouchMoved' n'est plus fiable. Voici ma solution:
Warn votre lecteur de toucher l'écran très légèrement pour éviter le changement de position de contact dans la dimension z fronçant les sourcils
Ou, vous pouvez ajouter du code comme ci-dessous pour éviter le code dans la fonction « onTouchMoved » être utilisé de façon imprévue:
void CCLayerPanZoom::ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent) {
CCPoint point1 = touch->getLocation();
CCPoint point2 = touch->getPreviousLocation();
if (point1.equals(point2)) {
return;
}
CCLOG("CCLayerPanZoom::ccTouchesMoved");
}
getLocation() ou getPreviousLocation() renvoie des valeurs vec2, de sorte que vous pouvez éliminer à peu en toute sécurité le cas de perturbation par le paramètre de force tactile (contact déplacé dans la dimension z).
Alors, c'est ça.
Pouvez-vous fournir du code? – Darvydas
@Darvydas J'ai modifié ma question et ajouté du code. – Zubair