Aide - Recherche - Membres - Calendrier
Version complète : Mon anim dans FireFox ou IE : les évenements claviers sont dingues.
Centre de Formation Flash - Forums Adobe Flash > Adobe Flash > Programmation Actionscript > Actionscript 3
minutepapillon
Salut à tous ... icon_smile.gif
J'écoute les évenements claviers :

Action Script

stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);

et je déclenche un code si la barre d'espace est pressée.

Action Script

function reportKeyDown(event:KeyboardEvent):void
{
// Debug pour voir ce qu'il y a dans l'event...
pageActuelleTextBoard.newContent("<tititre>" + event.toString() + "</tititre>");
if (String.fromCharCode(event.charCode) == " ")
{
// code à effectuer si l'utilisateur presse la touche espace.
}
}

Tout fonctionne à merveille quand j'exécute le .swf hors navigateur icon_smile.gif ... mais dans Firefox et dans IE : c'est le bordel : icon_eek.gif icon_mad.gif
1°) Dans Firefox.
Quand je clique sur un bouton qui s'occupe de la mise en fullScreen, le code ci dessus capte l'évennement suivant :
Citation
[KeyboardEvent type="keyDown" bubbles=true cancelable=false eventPhase=2 charCode=32 keyCode=32 keyLocation=0 ctrlKey=false altKey=false shiftKey=false]

En gros, il crois que je tape la barre d'espace (que je n'ai pas touché !! icon_mad.gif ) ... c'est d'autant plus fou que c'est elle que je cherchais à détecter !! icon_eek.gif ... coincidence de fou ... icon_eek.gif icon_mrgreen.gif
2°)Dans IE, il ne capte plus DU TOUT d'évennement clavier ... icon_cry.gif
Tain ... je dois rendre mon projet dans 5 jours et j'ai ce truc de malade qui me tombe dessus ... icon_confused.gif
A votre avis dois-je me pendre avec une corde de montagne en synthétique ou plutôt avec une bonne vienne corde en chanvre ? icon_mrgreen.gif
Logic
Salut.

T'as pas pensé au bon vieux gaz ? icon_lol.gif

Plus sérieusement, dans ce genre de cas, il faut tenter d'isoler le code qui pourrait poser problème. Tu mets tout en commentaire, et tu décommentes bloc par bloc... à chaque fois tu testes, et dès qu'un comportement bizarre arrive, tu sais d'où ça vient.
minutepapillon
... merci Logic icon_smile.gif ... mais j'ai vu Jean Carmet dégueuler dans le film "Le Sucre" ... aprés une tentative de suicide au gaz icon_eek.gif ... ça donne pas envie ... (film culte au demeurant - Depardieu, Picoli, Pieplu ...ect ...) icon_wink.gif
Sinon, j'ai eu la même idée que toi (j'ai toujours les idées juste aprés avoir posté mes messages ... c'est bête hein ? ... icon_redface.gif ) et en fait, en mettant en commentaire le passage en fullScreen .... tout remarche farpètement ... euh ... parfaitement ! icon_neutral.gif
Est ce que l'entrée ou la sortie en fullScreen ... crée des événements clavier ? ..... icon_confused.gif ...
Bon, mais merci encore, ça fait plaisir de ne pas se sentir abandonné un dimanche soir de tempête (ça soufle dehors ... et dans ma caboche aussi ...) icon_smile.gif
Logic
Isole la partie gérant le fullscreen et tes évènements clavier et envois-nous ça.
minutepapillon
Ceci est la fonction qui effectue la bascule d'un état à l'autre ...(full et non full.)
C'est son exécution qui semble semer la terreur dans mon code (sous Firefox et IE ...) Quand je la mets en coment : tout marche ....

Action Script

function basculeFullScreen():void
{
if (!enFullScreen)
{
//trace("full screen lancé !")
stage.displayState = StageDisplayState.FULL_SCREEN;
enFullScreen = true;

// au cas où ce n'est pas encore fait ...
if(loaderFullScreenOff.parent == null )
{
// gestion des boutons
spriteIcones.addChildAt(loaderFullScreenOff,0);
loaderFullScreenOnEnleveRemets.disparait();
}
}
else
{
//trace("full screen arreté !")
stage.displayState = StageDisplayState.NORMAL;
enFullScreen = false;
loaderFullScreenOnEnleveRemets.apparait(); // au cas où ce n'est pas encore fait ...
}
}

et aussi :

Action Script

stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenHandler)
pour ceci :

Action Script

function fullScreenHandler(evt:FullScreenEvent):void  // en cas de sortie du fullscreen ...
{
if (evt.fullScreen)
{
// on entre : rien de plus à faire
}
else // testons la variable "enFullScreen" :
{
if (enFullScreen) // tiens ?! l'application se croit encore en fullscreen : c'est que l'utilisateur est passé par la touche esc et ne l'a pas prévenu...
{
enFullScreen = false;
loaderFullScreenOnEnleveRemets.apparait();
}
}
}

... quant aux évenements claviers, il sont dans mon premier message ....
J'avoue que je n'ai pas d'explication là ... icon_rolleyes.gif
minutepapillon
Re-Salut !
J'ai mieux ... j'ai isolé ce bug en générant un petit .swf.
Voici le code :

Action Script

stage.quality = StageQuality.HIGH;
stage.scaleMode = StageScaleMode.NO_SCALE
stage.align = StageAlign.TOP_LEFT;

var textField:TextField = new TextField();
textField.x = 220;
textField.y = 0;
textField.width = 1000;
textField.height = 500;
textField.background = true;
textField.backgroundColor = 0xffffff;
addChild(textField);

// pour le fullScreen
var carre:Sprite = new Sprite();
carre.graphics.beginFill(0x000099);
carre.graphics.drawRect(0,0,200,200);
addChild(carre);
carre.addEventListener(MouseEvent.CLICK, fullScreenOnClick);

function fullScreenOnClick(e:Event):void
{
stage.displayState = StageDisplayState.FULL_SCREEN;
}

// pour le clavier
stage.focus = stage ;
stage.addEventListener(KeyboardEvent.KEY_DOWN , reportKeyDown);

function reportKeyDown(event:KeyboardEvent):void
{
textField.text = event.toString();
}

icon_exclaim.gif Sous FireFox
Quand je lance le FullScreen en cliquant sur le carré bleu, un event clavier est détecté ... une barre d'espace !!
Je vous joins la source, le swf, l'html, une copie d'écran pour prouver que je suis pas dingue ... quoique, ça vient ...
icon_exclaim.gif Sous IE
Il ne me détecte les events clavier qu'avant de passer en Full Screen ...

Et la au dodo ... parce que je ne sais pas de quoi je vais rêver aprés tout ça ... je mériterais bien un rêve érotique vu comme j'en ai bavé aujourd'hui ... icon_cool.gif
Merci d'éventuels coups de main, bonne nuit ...
minutepapillon
icon_confused.gif ... personne n'a d'avis ou d'explication sur ce bug ?
(tout est expliqué dans mon post précédent ... il est autosuffisant .... )
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.