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

Résolu
Signaler
Messages postés
9
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
16 juin 2007
-
Messages postés
9
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
16 juin 2007
-
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;
}
}

7 réponses

Messages postés
9
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
16 juin 2007

MERCI ! ça marche maintenant ! Waouw, ça touuuurne !

http://pastebin.ca/565125

pour voir le code :-)
Messages postés
9
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
16 juin 2007

Pour voir le code formaté : (jusqu'au 12.07.2007...)

http://pastebin.ca/564942

Merci !
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

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);

++
Messages postés
9
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
16 juin 2007

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 !
Messages postés
9
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
16 juin 2007

Bon, j'ai tenter de faire plus simple, mais il me met toujours :
" Statement must appear within on/onClipEvent handler "

je capte pas :P
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

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.

++
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

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.

++