Pages: 1
Bonjour, je viens de continuer mon jeu (j'avance de jour en jour !!) est la je bloque pour créer un système d’évènement.
En réaliter je viens de créer une classe spécialement pour pouvoir piloter tous les mesh de mon jeu, sauf quand je fais :
Event Evenement(m_device, m_VaisseauNode, m_Position, m_rotation, m_Aceleration, m_vitesse);
m_device->setEventReceiver(&Evenement);
Bam un jolie "negativity.exe" à cessé de fonctionner...
Voila ma class pour créer un gestionnaire d’évènement :
La class :
Désoler de ne pas donner plus de code de mon jeu , j'ai peur qu'elle qu'un me copie tous se que j'ai fais pendant des mois...
Je sais vraiment pas ou est l'erreur.
Qu'elle qu'un peut-il m'aider ?
Hors ligne
Debug ton projet et regarde à quelle ligne ça plante.
Je suppose que tu ne sait pas utiliser le mode Debug (mais ça s'apprend vite) donc je vais faire un petit tuto :
sous CodeBlock :
- ajoute un point d'arret sur une ligne (clique à coté du n° de ligne, ça fait un point rouge, ou clique droit "Add breakpoint"), dans ton cas ce sera sur ton constructeur et/ou sur la fonction OnEvent (on peut en mettre autant que l'on veut et n'importe où).
- on lance le mode Debug (menu "Debug" puis "Start" ou plus simplement F8)
- ton programme va se lancer puis va s'arreter au point d'arret, pour qu'il avance il faut cliquer sur "Debug" "Next line" (ou l'icone correspondant dans la barre d'outils).
L'interet de ce mode est de savoir quelle ligne bloque, et surtout l'état des variables, pour les afficher il faut aller sur "Debug" "Debugging windows" "Watches"
Les pointeurs ne s'affichent pas directement, pour savoir ce qu'ils contiennent clique droit sur la variable (dans la fenetre Watches), puis "Deference pointer ???" (le reste est de l'anglais basique, donc tu devrais comprendre).
Si après ça tu ne peut toujours pas résoudre ton problème, repost ici (en disant quelle ligne bloque, et il est possible que ça ne bloque pas au niveau de l'event, dans ce cas la, met le point d'arret sur le main (c'est long, mais radical quand on ne sait pas quelle ligne fait bloquer le programme).
PS : Si j'ai expliquer tout ça c'est que le mode debug est une des choses les plus importantes de ton IDE, sans ça on ne peut pas faire de projets complexe.
PPS : Pour entrer dans une fonction, c'est "Step Into".
Hors ligne
Je fais se que tu dit mes sa ne marche pas, quand je fais "debug>start" le programme se compile mes se lance pas.
Et je sur que c'est bien la ligne "m_device->setEventReceiver(&Evenement);" qui ne marche pas.
Alors j'ai fais :
if(m_device->getEventReceiver() == 0)
m_device->setEventReceiver(&Evenement);
else
std::cout<<"Erreur : il y a deja un event receiver actif."<<std::endl;
pour savoir s'il y a déjà un event receiver actif, se qui créait des bug, alors je voudrais savoir s'il y a une fonctions pour désactiver tous les gestionnaires d’évènement de la scène, j'ai déjà tester se truc mes sa marche pas....
m_device->setEventReceiver(0);
Qu'elle qu'un peut-il m'aider...
Hors ligne
Sans plus d'information comme ça, je dirais que ça pourrait être un problème de portée.
Avec cette manière de créer ton Event, ce dernier est détruit à la fin de "une_certaine_méthode", et donc s'il est utilisé ailleurs (si ta boucle de jeu est en dehors de cette méthode), ben tu vas taper sur un pointeur vers un objet qui n'existe plus.
Mon conseil, c'est de créer ton objet avec new, et de stocker le pointeur quelque part pour faire un delete à la fin de ton programme.
Hors ligne
Merci sa fonctionne !!!
Même si je peut plus utiliser ma camera, mes je vais m'en passer, mes sa serait quand même utile de lavoir.
Wtf, ma touche "^^" écrit deux fois un appuient qu'une fois !!!
Hors ligne
Pages: 1