Action script+clavier : Key.isDown est trop lent.

Résolu
fxi Messages postés 9 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juin 2007 - 13 juin 2007 à 21:57
fxi Messages postés 9 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juin 2007 - 13 juin 2007 à 23:41
Hello,
Je vis ma première expérience avec flash et action script. Je fais une tentative de "jeu" assez basique : l'animation reçoit une lettre, a ou b, d'un gamepade (ça marche aussi avec une souris) et un cadran affiche deux aiguilles qui font une rotation de quelques degrés à chaque impulsion. Seul problème, l'animation ultrabasique (voir code) ne comptabilise pas chaque impulsion ! en revanche, lorsque la touche est pressée en rafale, il n'y a plus de soucis. D'où vient le problème ?

onClipEvent (enterFrame) {
if (Key.isDown(65)) {
this._rotation -= 4;
}
if (Key.isDown(66)) {
this._rotation += 4;
}
}
A voir également:

7 réponses

fxi Messages postés 9 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juin 2007
13 juin 2007 à 23:41
MERCI ! ça marche maintenant ! Waouw, ça touuuurne !

http://pastebin.ca/565125

pour voir le code :-)
3
fxi Messages postés 9 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juin 2007
13 juin 2007 à 22:05
Pour voir le code formaté : (jusqu'au 12.07.2007...)

http://pastebin.ca/564942

Merci !
0
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
13 juin 2007 à 22:19
Nomal

en utilisant un enterFrame tu oblige l'animation à vérifier à chaque image si la touche est pressé ou non, c'est donc très lourd. C'est pour cela qu'on a crée les écouteurs :

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
    //trace("DOWN -> Code: "+Key.getCode()+"\tACSII: "+Key.getAscii()+"\tKey: "+chr(Key.getAscii()));
    switch (Key.getCode()) {
    case 65 :
        trace("touche a");
        break;
    case 66 :
        trace("touche b");
        break;
    }
};
Key.addListener(keyListener);

++
0
fxi Messages postés 9 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juin 2007
13 juin 2007 à 22:58
Ce code semble très intéressant, mais il me met plein d'erreur si je tente l'expérience.. Il faut que je me renseigne sur les keyListener !

Merci pour le début de piste !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fxi Messages postés 9 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juin 2007
13 juin 2007 à 23:06
Bon, j'ai tenter de faire plus simple, mais il me met toujours :
" Statement must appear within on/onClipEvent handler "

je capte pas :P
0
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
13 juin 2007 à 23:20
C'est parceque tu place le code sur un clip (ou un bouton), et dans ce cas Flash exige de placer le code dans un gestionnaire d'évènement.
Je te conseille de mettre plutôt mettre ton clip à la première image clé de ta timeline.

++
0
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
13 juin 2007 à 23:22
C'est parceque tu place le code sur un clip (ou un bouton), et dans ce cas Flash exige de placer le code dans un gestionnaire d'évènement.
Je te conseille de mettre plutôt mettre ton clip à la première image clé de ta timeline.

++
0