Forums Développement Multimédia

Aller au contenu

[résolu] :  KeyDown

Director

7 réponses à ce sujet

#1 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 24 March 2010 - 19:43 PM

Bonjour, encore moi

Voila un bon 2 heures que je cherche a faire fonctionner un bout de code mais sans succès.:



Global modif_sprite
on KeyDown
  put _key.keyCode
  if (_key.keyCode = 18) then
    modif_sprite = 3
  else if (_key.keyCode = 19) then
    modif_sprite = 94
  else if (_key.keyCode = 123) then
    sprite(modif_sprite).LocH = sprite(modif_sprite).LocH-5
  else if (_key.keyCode = 124) then
    sprite(modif_sprite).LocH = sprite(modif_sprite).LocH+5
  else if (_key.keyCode = 125) then
    sprite(modif_sprite).LocV = sprite(modif_sprite).LocV+5
  else if (_key.keyCode = 126) then
    sprite(modif_sprite).LocV = sprite(modif_sprite).LocV-5
  else if (_key.keyCode = 36) then
    member("txt_coord_carte_fla").Text = sprite(3).LocH&RETURN&sprite(3).LocV
    member("txt_coord_vseteici").Text = sprite(94).LocH&RETURN&sprite(94).LocV
    castLib(2).save(the moviePath & "Data\data_system.cst")
    member("txt_admin").Text = "0"
    sprite(96).visible = TRUE
    sprite(97).visible = TRUE
    go to 79
  end if
end KeyDown
on exitFrame me
  if member("txt_admin").Text = "1" then
    put _key.keyCode
    --put sprite(modif_sprite).LocV
    go to the frame
  else
    _movie.delay(10*60)
  end if
end

 

Je m'explique; Un acteur flash(SWF) se trouve sur le sprite(3) et j'essaie de le positionner avec les flèches du clavier. Quand on appuie sur "Entrer" l'animation continu.

Le problème est que je suis capable de faire marcher mon " positionnement" avec un SWF en particulier mais pas avec un autre. Je me suis fabriquer 3-4 SWF tous différents et UN seul marche.

J'entends par "marche" que le SWF se déplace sur le stage quand j'appuie sur les flèches. (Le KeyDown semble fonctionner a ce moment)

Je change le SWF (manuellement ou dynamiquement)dans l'anim, je démarre l'appli et lorsque j'appuie sur les flèches, rien. (Le KeyDown ne semble pas marcher a ce moment... j'ai testé avec un "put _key.keyCode" et rien. Cependant le "exitFrame me" lui est pris en compte.)


J'ai redémarré Director et le problème survient encore. J'ai également testé avec des JPG au lieu des SWF et tous les testes furent concluant.

Ça sent le bug a plein nez!

Merci de votre aide.

#2 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 24 March 2010 - 20:15 PM

Hello

tu n'aurais pas un souci avec tes conditions IF

j'ai testé ceci et quelque soit le sprite utilisé il se déplace bien selon l'axe !
global modif_sprite

on beginsprite
  modif_sprite = 1  
end

on keydown
  case _key.keycode of      
    123: sprite(modif_sprite).LocH = sprite(modif_sprite).LocH-5
    124: sprite(modif_sprite).LocH = sprite(modif_sprite).LocH+5
    125: sprite(modif_sprite).Locv = sprite(modif_sprite).Locv+5
    126: sprite(modif_sprite).Locv = sprite(modif_sprite).Locv-5      
  end case
end


#3 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 25 March 2010 - 14:27 PM

Bonjour Lee,

En faite le problème n'est pas le sprite utilisé mais la source de qui doit être déplacé. (La variable modif_sprite n'était qu'un test. Désolé!! :oops: )

mon sprite(3) contient l'acteur nommé CARTE dans ma distribution. Cet acteur est un SWF avec la source suivante : _movie.path&Carte_S.SWF

Lorsque je permute la carte par une autre, ex.: member("CARTE").filename = _movie.path&Carte_T.SWF , le code KeyDown ne fonctionne plus avec ce SWF.


Voila la façcon dont je procède:

J'ai mis le script suivant sur le frame 10 de mon anim :


Global modif_sprite -- Cette variable est initialis au dbut de l'anim
on keydown
  case _key.keycode of
    18: modif_sprite = 3
    19: modif_sprite = 94
    36: member("txt_coord_carte_fla").Text = sprite(3).LocH&RETURN&sprite(3).LocV
      member("txt_coord_vseteici").Text = sprite(94).LocH&RETURN&sprite(94).LocV
      castLib(2).save(the moviePath & "Data\data_system.cst")
      member("txt_admin").Text = "0"
      sprite(96).visible = TRUE
      sprite(97).visible = TRUE
      go to 79
    123: sprite(modif_sprite).LocH = sprite(modif_sprite).LocH-5
    124: sprite(modif_sprite).LocH = sprite(modif_sprite).LocH+5
    125: sprite(modif_sprite).Locv = sprite(modif_sprite).Locv+5
    126: sprite(modif_sprite).Locv = sprite(modif_sprite).Locv-5      
  end case
end
on exitFrame me
  if member("txt_admin").Text = "1" then    -- Si mode admin = 1 demeurer sur le frame
    go to the frame
  else
    _movie.delay(10*60)                     -- Sinon, attendre 10s et continuer l'
anim
  end if
end
 


Je ne comprend pas pourquoi certain SWF fonctionne et d'auter non. Ils ont tous les même configurations.

Si tu veux essayer, je peux mettre en lien 2 cartes, une qui fonctionne et l'autre non.

Merci beaucoup,

100ième messages! :o (Que des questions :shock: )

Modifié par Psykoo, 25 March 2010 - 14:30 PM.


#4 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 25 March 2010 - 14:57 PM

Est-ce que le swf ne prendrait pas la main sur le clavier ? Je n'y connais pas grand chose en flash, mais peut être que certains réagissent au clavier. Un peu comme sur un site avec une vidéo flash. Si on clique sur la vidéo, généralement le navigateur ne reçoit plus le clavier.

Il faudrait essayer de forcer le focus après avoir charger le swf.

Est-ce que ça se produit sur certains swf et pas sur d'autres, quelque soit l'ordre de chargement (donc problème dans le flash) ? Ou alors est-ce que ça fonctionne toujours pour le 1er et plus du tout pour les autres (donc prise du focus par le swf) ?

#5 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 25 March 2010 - 15:11 PM

Voir le messagebubarnet, le 25 March 2010 - 14:57 PM, dit :

Est-ce que le swf ne prendrait pas la main sur le clavier ? Je n'y connais pas grand chose en flash, mais peut être que certains réagissent au clavier. Un peu comme sur un site avec une vidéo flash. Si on clique sur la vidéo, généralement le navigateur ne reçoit plus le clavier.

Il faudrait essayer de forcer le focus après avoir charger le swf.

Est-ce que ça se produit sur certains swf et pas sur d'autres, quelque soit l'ordre de chargement (donc problème dans le flash) ? Ou alors est-ce que ça fonctionne toujours pour le 1er et plus du tout pour les autres (donc prise du focus par le swf) ?


Bonjour Bubar,

Ça du sense! Le problème est toujours avec les mêmes SWF. L'ordre dans lequel je les changent ne dérange pas. C'est donc que CARTE_S.SWF (celle qui fonctionne avec le script) aurait une option de ne pas prendre le clavier en compte... et que CARTE_T.SWF et les autres auraient cette option...

Je ne connais pas trop Flash et encore moins le actionscript. Es ce que cette "option" à un nom en particulier? Ou serait-ce plus facile de forcer un focus sur l'anim??

Je ne sait pas comment forcer un focus je vais donc aller fouiller dans les options de publication des SWF dans Flash.

Merci pour la piste! J'vous tiens au courant.

#6 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 25 March 2010 - 15:26 PM

Rebonjour,

J'ai trouvé... C'est vraiment bête.

Les SWF qui refusaient de bouger comportaient des champs textes... Donc Bubar merci pour la piste c'était vraiment le problème. Director semble prioriser les champs texte dans les SWF d'une animation.

Merci de votre aide toujours aussi précieuse! :Hola:

#7 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 30 March 2010 - 17:52 PM

Bonjour,

Petit problème encore, tout marche en authoring mais en executable le KeyDown ne fonctionne plus! Je fouille dans les options du projecteur...sans rien trouver. le mode de lecteur est Standard.

Une idée ?? :?

Merci!

#8 papwal

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 201 messages

Posté 01 April 2010 - 00:36 AM

j'ai eu plein de problèmes avec cet event, j'ai laissé tomber

une technique beaucoup plus facile pour gérer le contrôle clavier c'est appeler la fonction keyPressed sur l'event enterFrame

on enterFrame

 spriteCenter = spriteCenter + point( keyPressed(124)-keyPressed(123) , keyPressed(126)-keyPressed(125) )

 sprite(x).loc = spritecenter

end




1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP