Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [RESOLU][SFML 2.2 Android] sf::Touch  (Lu 3103 fois)

0 Membres et 1 Invité sur ce sujet

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
[RESOLU][SFML 2.2 Android] sf::Touch
« le: Décembre 17, 2014, 11:01:47 pm »
J'arrive sans problème à compiler un programme SFML et à le faire tourner sur mon Galaxy note 3
J'ai fait un petit jeu pour mon fils , le but est d'éclater des bulles de couleurs...
Ca marche nickel sur mon smartphone, en revanche sur ma Tablette (Asus 10.1 ) , j'ai besoin de deux doigts pour les éclater...

la partie ou j'éclate "mes bulles" :

if (sf::Touch::isDown(0) && mTouchFlag == false)
                                {
                                        mTouchFlag = true;
                                        sf::Vector2i position = sf::Touch::getPosition(0,mWindow);
                                        if(explodeBubble(position.x, position.y)==true)
                                        {
                                                for(int p=0; p<99; ++p)
                                                {
                                                        mParticleArray.push_back(Particle(position.x, position.y, mParticleTexture, mTargetColor) );
                                                }
                                                mScore++;
                                        }
                                        else
                                        {
                                                mExplodeSound[5].play();
                                        }
                                }
                               
                                if (!sf::Touch::isDown(0) && mTouchFlag == true)
                                {
                                        mTouchFlag = false;
                                }
là , je sèche...

Sinon , mille merci à la Team pour la version 2.2 , super boulot.
« Modifié: Décembre 18, 2014, 07:47:20 pm par Cpl.Bator »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.2 Android] sf::Touch
« Réponse #1 le: Décembre 18, 2014, 08:08:38 am »
Si lors d'un touch unique il ne se passe rien, tu peux vérifier :
- sf::Touch::isDown(i) pour tous les indices possibles (rien n'oblige à ce qu'il soit mappé sur l'indice 0)
- les évènements Event::TouchPressed et Event::TouchReleased, pour voir d'une autre manière s'il se passe quelque chose

D'ailleurs ton code ressemble plus à une gestion des évènements Pressed et Released, pourquoi est-ce que tu t'embêtes avec sf::Touch et un booléen ?
Laurent Gomila - SFML developer

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : [SFML 2.2 Android] sf::Touch
« Réponse #2 le: Décembre 18, 2014, 09:13:48 am »
Ok, je vais tester tout les indices possible.
Pour le booléen , c'est pour éviter une rafale de destruction si 2 bulles se chevauche. "one touch, one kill"

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.2 Android] sf::Touch
« Réponse #3 le: Décembre 18, 2014, 09:53:45 am »
Citer
Pour le booléen , c'est pour éviter une rafale de destruction si 2 bulles se chevauche. "one touch, one kill"
J'avais bien compris, mais pourquoi ne pas utiliser les évènements ?
Laurent Gomila - SFML developer

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : [SFML 2.2 Android] sf::Touch
« Réponse #4 le: Décembre 18, 2014, 10:26:24 am »
parce que...  ;D
en fait j'ai une classe application qui gère les événements, le code plus haut n'est pas dans la même classe.
je ferais une modification pour tester directement avec les événements et voir si cela résout mon problème.

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : [SFML 2.2 Android] sf::Touch
« Réponse #5 le: Décembre 18, 2014, 07:47:01 pm »
En passant par les Event cela résoud effectivement le problème.
Je pensais naïvement que l'indice 0 de la méthode statique sf::Touch::isDown() était le premier doigt... ma tablette etant plus grosse , elle en veut 2... gourmande...  :P
En fouillant l'API j'ai vu que sf::Event::TouchEvent fournissait aussi l'indice pour le doigt.
Cela marche nickel sur mes 2 plateformes a la maison.


hs:

petite coquille ici :
http://www.sfml-dev.org/issues-fr.php

Citer
Vérifiez les official tutoriels, tout spécialement les encadrés rouges.[/q]
[/size][/font]
  • [/l]
    [/font][/color]

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [RESOLU][SFML 2.2 Android] sf::Touch
« Réponse #6 le: Décembre 18, 2014, 08:21:40 pm »
En effet rien ne garantit qu'un appui avec un seul doigt utilise l'indice 0. Ceci-dit il faudra vérifier l'implémentation Android, c'est bizarre que ce ne soit pas le cas. Sous iOS par exemple ce serait bien un 0 que tu aurais.

Merci pour les erreurs sur le site. Cette fois je n'ai pas eu le temps de m'occuper des textes, et on dirait que ceux qui l'ont fait n'ont pas été très inspirés pour certaines parties ;D
Laurent Gomila - SFML developer