OVH Cloud OVH Cloud

[DIR] action des touches répétées

8 réponses
Avatar
KRS
Dans l'affichage d'une liste par exemple, l'action de la touche flechée
bas a pour effet de descendre d'une ligne.
Si je laisse cette touche enfoncée, il ne se passe rien. Normal,
l'action se déclenche au relachement de la touche.
Néanmoins, suivant le fonctionnement général d'un système
d'exploitation, une touche qui reste enfoncée agit en rafale après un
court laps de temps.

Afin de faire proprement, j'aimerais vos avis sur la façon de réaliser
ce comportement (ou si ça existe déjà tout fait) afin de l'applique dans
de nombreuses situations.


Merci d'avance

8 réponses

Avatar
Ned
Salut,

perso je testerai le keypressed(code_de_la_touche) sur exitframe.
Il faudra certainement le traiter après un petit délai pour éviter que
ça fuse trop vite. genre :

propert pTim

on keyDown me
if keyPressed(code_de_la_touche) thne
pTim = the timer + 30
end if
end

on exitframe me
if keyPressed(code_de_la_touche) and pTim < the timer then
-- just do it ;o)
end if
end


hth
--
-----
Ned
------------------------------------
Bien faire et laisser braire ...
mais après avoir lu & compris ceci :
http://faqmm.free.fr
------------------------------------
Avatar
Wolfy
Slt,
moi j'avais fait un petit jeu où l'on pouvait soit bouger unn sprite avec
les touches, soit en cliquant sur des images signalant les déplacements.
ça donnait un script bien trop long à mettre ici, mais juste l'essentiel
pour les touches du clavier :

---Dans un script d'animation - preparemovie
-----------------------------
-- Déplacements de mon image :
-----------------------------
on gBougeMonImage

-- Déplacement à Gauche
if the keycode = 123 and sprite(4).locH > 120 then
sprite(MonImage).locH = sprite(MonImage).locH - 15
end if

-- Déplacement à Droite
if the keycode = 124 and sprite(4).locH < 850 then
sprite(MonImage).locH = sprite(MonImage).locH + 15
end if

end gBougeMonImage
-----------------------------

ensuite, dans un script d'animation placé sur la piste de script, juste ça
suffit:

-----------
on keyDown me
gBougeMonImage
end
----------


Donc dans tout ça, rien ne se place dans un enterframe ou exiteframe. Mais
avec la gestion de la souris, ne pas oublier d'insérer un updatestage,
sinon, l'image ne bouge qu'une fois si on reste appuyé sur le clic de la
souris. Alors que là, ça bouge jusqu'à relachement.
Avec ça, logiquement, mon script marche exactement de la même facon qu'une
touche pressé avec le mode répétition.

j'espère que ça t'a aidé un peu. Bon courage.


Wolfy



"KRS" a écrit dans le message de news:
dtf97j$qqh$
Dans l'affichage d'une liste par exemple, l'action de la touche flechée
bas a pour effet de descendre d'une ligne.
Si je laisse cette touche enfoncée, il ne se passe rien. Normal, l'action
se déclenche au relachement de la touche.
Néanmoins, suivant le fonctionnement général d'un système d'exploitation,
une touche qui reste enfoncée agit en rafale après un court laps de temps.

Afin de faire proprement, j'aimerais vos avis sur la façon de réaliser ce
comportement (ou si ça existe déjà tout fait) afin de l'applique dans de
nombreuses situations.


Merci d'avance


Avatar
Ned
sans vouloir "batailler" :o)
je ne vois pas dans ton code ce qui gère la répétition de touches (quand
on la maintient appuyée), ce qui est apparemment ce que cherche KRS, non ?

ou alors il est temps que j'aille au pieu ;o))

--
-----
Ned
------------------------------------
Bien faire et laisser braire ...
mais après avoir lu & compris ceci :
http://faqmm.free.fr
------------------------------------
Avatar
Wolfy
Moi j'avais compris que le fonctionnement de la touche ne fonctionnait
qu'une seule fois, car je suppose que la prog a été faite depuis un mouseup
ou mousedown. Ce qui a pour effet de ne pas creer de répétition.
Je ne crois pas que c'etait au niveau de la gestion des timings du mode
répétition qui devait être géré, mais c'est toujours bien de pouvoir agir
dessus ;o)
On verra d'après la réponse de KRS :)

Wolfy



"Ned" a écrit dans le message de news:
dtg9o4$e60$
sans vouloir "batailler" :o)
je ne vois pas dans ton code ce qui gère la répétition de touches (quand
on la maintient appuyée), ce qui est apparemment ce que cherche KRS, non ?

ou alors il est temps que j'aille au pieu ;o))

--
-----
Ned
------------------------------------
Bien faire et laisser braire ...
mais après avoir lu & compris ceci :
http://faqmm.free.fr
------------------------------------


Avatar
KRS
Merci Ned, ça me semble très bien comme méthode.
Hélas je ne trouve pas de doc concernant la fonction The Timer, est ce
que ça n'existe plus dans Director 9?
à la place j'ai trouvé une fonction timeout qui exécute un gestionnaire
après un délai donné.
Ta méthode avec The timer me parait plus logique, je vais faire qq
recherches la dessus...

Ned wrote:
Salut,

perso je testerai le keypressed(code_de_la_touche) sur exitframe.
Il faudra certainement le traiter après un petit délai pour éviter que
ça fuse trop vite. genre :

propert pTim

on keyDown me
if keyPressed(code_de_la_touche) thne
pTim = the timer + 30
end if
end

on exitframe me
if keyPressed(code_de_la_touche) and pTim < the timer then
-- just do it ;o)
end if
end


hth


Avatar
KRS
Bon, the timer fonctionne très bien, ce n'est juste absolument pas
documenté...
Avatar
Ned
en effet, je viens de le constater....
'sont lourds avec leur docs moitié faites.
Peut-être préfèrent-ils qu'on utilise _system.milliseconds désormais ?
--
-----
Ned
------------------------------------
Bien faire et laisser braire ...
mais après avoir lu & compris ceci :
http://faqmm.free.fr
------------------------------------
Avatar
Bubarnet
Ned wrote:
en effet, je viens de le constater....
'sont lourds avec leur docs moitié faites.
Peut-être préfèrent-ils qu'on utilise _system.milliseconds désormais ?


Je pense. The timer utilise les anciens tics.
De plus ils essayent de virer tous les restes de la syntaxe verbose. Il doit
donc surement exister un _player.quelquechose (ou _system ou ...)

Pour ma part, je n'utilise plus que milliseconds. C'est plus réactif et les
ordos actuels sont suffisament puissant pour ça

--
Bubar
Freelance Multimédia - internet
Création de logiciels multimédia et sites web
http://www.wapitistudio.com