Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le Deal du moment : -20%
OnePlus Nord CE 2 5G – 8GB RAM 128GB – ...
Voir le deal
239 €

descriptionBogue greffon clavier ? EmptyBogue greffon clavier ?

more_horiz
J'ai un bogue dans mon programme avec le greffon clavier mais je n'arrive pas à le reproduire.
En effet, à l'ouverture de mon programme le greffon clavier fonctionne normalement.
Mais si je charge une sauvegarde dans mon programme, il ne fonctionne plus du tout.
L'appui sur les touches du clavier n'a alors aucun effet.

[php]
Sélectionner :
*tile_sélection :: mongraphique
num_x :: nombre
num_y :: nombre
numéro_case_grille4 :: nombre
début
"sélection" !
Si (numéro_case de tile_sélection) != -5, lis
index_copie_casier_tiles2 = index_copie_casier_tiles de tile_sélection
sélection_on = vrai
Vide les touches
va vers Attente_clavier
ferme

Attente_clavier :
clavier :: clavier
début
évoque clavier.commencer()
tant que vrai, lis
attends 100 millisecondes
parcours Actions avec clavier.touches(), clavier
ferme

Actions :
*liste :: casier de nombre
*clavier :: clavier
indice :: nombre
début
"Actions" !
si liste est non vide, lis
"test" !
pour chaque liste, lis
Si joker == "Retour arrière", lis
évoque clavier.stop()
Va vers Edition_supprimer
ferme
Si joker == "Droite", lis
si indice_horizontal <
(nombre_case_largeur - nombre_case_largeur_effectif), lis
déplace cadre vers la droite de taille_largeur_case
incrémente indice_horizontal
évoque clavier.stop()
va vers Affichage_quadrillage
ferme
ferme
Sinon si joker == "Gauche", lis
si indice_horizontal >
0, lis
déplace cadre vers la gauche de taille_largeur_case
décrémente indice_horizontal
évoque clavier.stop()
va vers Affichage_quadrillage
ferme
ferme
Sinon si joker == "Haut", lis
si indice_vertical >
0, lis
déplace cadre vers le haut de taille_hauteur_case
décrémente indice_vertical
évoque clavier.stop()
va vers Affichage_quadrillage
ferme
ferme
Sinon si joker == "Bas", lis
si indice_vertical <
(nombre_case_hauteur - nombre_case_hauteur_effectif), lis
déplace cadre vers le bas de taille_hauteur_case
incrémente indice_vertical
évoque clavier.stop()
va vers Affichage_quadrillage
ferme
ferme
ferme
ferme
Reviens
[/php]

Par exemple, si ma fonction "sélectionner" est activée, le mot "sélection" s'affiche sur le tableau de l'atelier.
Ma fonction "Attente_clavier" s'active.
Le mot "Actions" s'affiche sur le tableau de l'atelier.
Pourtant, le mot "test" ne va jamais s'afficher sur le tableau.

Or, au démarrage de mon logiciel, le greffon clavier fonctionne normalement.
Mais si je charge une sauvegarde, il ne fonctionne plus, bien que la sauvegarde n'ai aucun lien avec les fonctions "Sélectionner", "Attente_clavier" ou "Actions"...

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Merci pour cette remontée de bogue, je vais regarder pourquoi ça arrive.

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Et si tu ajoutes cette trace :

[php]
Attente_clavier :
clavier :: clavier
début
évoque clavier.commencer()
tant que vrai, lis
attends 100 millisecondes
parcours Actions avec clavier.touches(), clavier
Affiche "je passe par là !"
ferme
[/php]

ça donne quoi ?

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
il affiche bien "je passe par là" toutes les 100 millisecondes.

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Est-ce que le non fonctionnement du greffon Clavier n'intervient pas dés que tu utilises les fonctions sélectionneretouvrir() ou séléctionneretenregistrer() du conduit ?

Je n'arrive pas à reproduire ton problème....

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
J'ouvre l'atelier.
Je lance mon programme.
Puis je charge un tileset, je dessine un quadrillage et je drag§drop des tiles dans mon quadrillage :
le scrolling fonctionne.
Si ensuite j'utilise les fonctions sélectionneretenregistrer() :
le scrolling fonctionne toujours.
Si j'utilise la fonction sélectionneretouvrir() pour ouvrir ma sauvegarde :
le scrolling fonctionne.

Le problème intervient quand :
J'ouvre l'atelier.
Je lance mon programme.
J'utilise la fonction sélectionneretouvrir() pour ouvrir ma sauvegarde :
là le scrolling ne marche pas...

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
ok, interessant...

Dans le deuxième cas, tu n'as pas touché à la toile avant d'appeler la fonction sélectionneretouvrir().

La toile est-elle affichée au moment où tu appelles cette méthode ?

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Afin de tester si c'est un problème de perte du focus de la toile.
Peux-tu télécharger le greffon de tests que j'ai attaché au post. De remplacer celui que tu as sur ton disque (<
Répertoire Personel>
/.linotte/greffons)

Et d'ajouter un appel à la méthode clavier.focustoile() au moment où tu veux utiliser ta toile ?

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Je n'ai pas de fichier "Clavier.zgl" dans mon dossier Linotte/greffons.
J'y ai donc ajouté ton greffon "Clavier.zgl".
J'ai également ajouté dans mon code ceci :
[php]
évoque clavier.focustoile()
[/php]

Et voici ce qui s'affiche sur le tableau :
La méthode fonctionnelle est inconnue : focustoile

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Non, regarde dans ton répertoire personnel sous Windows

Un truc comme ça :
C:\Documents and Settings\Wam\.linotte\greffons

Les greffons téléchargés vont dans ce répertoire car je suis sur d'avoir les droits d'écriture pour y stocker les nouveaux greffons.

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
En faisant ceci avec ton greffon "Clavier.zgl" :
[php]
Attente_clavier :
clavier :: clavier
début
évoque clavier.commencer()
évoque clavier.focustoile()
tant que vrai, lis
attends 100 millisecondes
parcours Actions avec clavier.touches(), clavier
ferme
[/php]

Sa fonctionne x)

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Bonne nouvelle.

Par contre, je ne vais pas laisser focustoile au greffon clavier.

Les problèmes liés au focus peuvent arriver dans d'autres contextes.

Je vais plutôt ajouter un nouveau verbe comme par exemple :
[php]
Activer toile
[/php]

Je vais y réfléchir...

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Attention,
Depuis l'utilisation de ce nouveau greffon, le clavier réagit parfois comme si la touche restait enfoncée.
Je m'explique :
J'appuie sur la touche "flèche droite" de mon clavier et mon quadrillage se déplace d'une case vers la droite.
Mais parfois, mon quadrillage se déplace indéfiniment vers la droite, comme si je maintenait la touche "flèche droite" de mon clavier enfoncée.

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
Ah !
J'ai effectué la correction à partir d'une mauvaise version...
je corrige ça !
Désolé !:s

descriptionBogue greffon clavier ? EmptyRE: Bogue greffon clavier ?

more_horiz
voici un version corrigée.

descriptionBogue greffon clavier ? EmptyRe: Bogue greffon clavier ?

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum