659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Utilisation de scancode Mar 4 Mai 2010 - 10:27 | |
| Vue ma compréhension limité . j'ai regarder la fonction scancode de plus près. voila le résultat de mes recherches : - Code:
-
' Utilisation de la fonction SCANCODE ' ----------------------------------- ' La fonction scancode lit les touches du clavier ou de la souris ' en temps réel, c.a.d qu'au moment de l'utilisation de la commande, ' une touche doit être activée,c'est pourquoi on utilise une boucle ' pour avoir le temps d'activer la touche.
' Déclaration des variables. dim x,y,a,b ,i ' Déclaration des étiqettes. label top ' Temporisation en 1000ieme de seconde. wait 1000 ' Etiquette de retour du programme. top: ' Compteur de boucle. i=i+1 ' Augmentation de la taille des caractères à 14 sur la fenêtre 0. ' La fenêtre 0 est crée par défaut à la mise en route du programme. font_size 0,14 ' Définition de la position de l'affichage sur la fenêtre active. print_locate 10,10 ' Affichage du contu de la variable I print i ' Test sur la valeur de la touche désirée dans ce cas le code 37 de la ' touche flêche a gauche du clavier. ' Si c'est la touche 37 alors on d'écrémente la variable X de -1 if scancode = 37 then x=x-1 print_locate 100,200 print x ' code 39 de la touche flêche à droite du clavier. if scancode = 39 then a=a+1 print_locate 100,220 print a ' code 38 de la touche flêche vers le haut du clavier. if scancode = 38 then y=y-1 print_locate 100,240 print y ' code 40 de la touche flêche vers le bas du clavier. if scancode = 40 then b=b+1 print_locate 100,260 print b ' Attente de 650 millisecondes wait 650 ' Fin du programme si le compteur est arrivé à 100 if i=100 then terminate ' Retour a l'étiquette top: goto top
Mais il y a certainement d'autres façons de faire. | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilisation de scancode Mar 4 Mai 2010 - 12:39 | |
| Salut, J'ai vu que tu as repris ton programme de l'autre post pour remplacer le select-case-end_select par des if. C'est une façon de contourner le problème. Je voudrais apporter quelques éclaircissements concernant scancode. J'ai vu que les compteurs pour la réception des flèches du clavier réagissent, mais pas toujours: c'est comme si on avait un faux contact au clavier. Cela tient au fonctionnement de scancode. C'est une VARIABLE système, pas une fonction. Cette variable retourne le code de la touche enfoncée AU MOMENT PRECIS ou on utilise scancode. Si l'on ne tombe pas pile au moment où la touche est enfoncée, on a un problème. Si tu veux capter (pour les compter, par exemple), toutes les touches frappées, il faut utiliser les évènements de Panoramic. Ton programme tourne en mode "ancien basic" (voir les multiples posts à ce sujet sur le forum). Je te suggère la méthode suivante: Dans ton programme, tu déclares tes variables et labels, tu initialises ce qu'il y a à initialiser, tu déclares un évènement on_key_down sur la form0 dans lequel tu peux utiliser scancode car un SAIT que la touche est enfoncée, et un bouton pour arrêter le programme. Et tu verras, TOUS les clicks sont pris en compte, sans délai. C'est ça, la méthode de programmation par évènements de Windows, et donc de Panoramic. Je me suis permis d'adapter ton programme à cette technique, et voici le résultat: - Code:
-
' Utilisation de la fonction SCANCODE ' ----------------------------------- ' La fonction scancode lit les touches du clavier ou de la souris ' en temps réel, c.a.d qu'au moment de l'utilisation de la commande, ' une touche doit être activée,c'est pourquoi on utilise une boucle ' pour avoir le temps d'activer la touche.
' Déclaration des variables. dim x,y,a,b ,i ' Déclaration des étiqettes. label key_down, click_1 ' déclaration du bouton pour arrêter button 1 top 1,10 left 1,300 caption 1,"Stop" on_click 1,click_1 ' déclaration de l'évènement de frappe d'une touche on_key_down 0,key_down end click_1: terminate key_down: if scancode = 37 then x=x-1 print_locate 100,200 print x ' code 39 de la touche flêche à droite du clavier. if scancode = 39 then a=a+1 print_locate 100,220 print a ' code 38 de la touche flêche vers le haut du clavier. if scancode = 38 then y=y-1 print_locate 100,240 print y ' code 40 de la touche flêche vers le bas du clavier. if scancode = 40 then b=b+1 print_locate 100,260 print b return
| |
|
659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: re : scancode Mar 4 Mai 2010 - 15:20 | |
| Ok, ça marche bien mieux avec ta modification.
j'ai vraiment des problèmes avec la programmation événementiel.
Merci à plus.
J'aurai encore surement besoin de toi et de toute la communauté Panoramic | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilisation de scancode Mar 4 Mai 2010 - 18:21 | |
| Pas de problème, le forum sert aussi à ça. You're welcome, comme disent les américains ! | |
|
659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: re : scancode Mar 4 Mai 2010 - 20:00 | |
| do you speak britsh en anglais see you later. | |
|
Invité Invité
| Sujet: Re: Utilisation de scancode Mar 4 Mai 2010 - 21:59 | |
| |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilisation de scancode Mar 4 Mai 2010 - 23:02 | |
| Désolé ! Je voulais juste faire sourire un peu... | |
|
Contenu sponsorisé
| Sujet: Re: Utilisation de scancode | |
| |
|