Forums Développement Multimédia

Aller au contenu

* * * * - 1 note(s)

play/pause timeline Barre espace

CODE AS3

10 réponses à ce sujet

#1 slexip2

    Ceinture Jaune

  • Members
  • PipPip
  • 15 messages

Posté 19 May 2014 - 17:08 PM

Bonjour,

J'aimerai qu'en appuyant une première fois sur la barre d'espace de mon anim
cela mette en pause la lecture et lors d'un second appui sur la barre cela remette en lecture?

Je suis parti sur

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
var spacebarPressed:Boolean = false;
function keydown(myEvent:KeyboardEvent):void
{
if (myEvent.keyCode == 32)
{
  spacebarPressed = true;
  stop();
}
else{
  spacebarPressed = false;
  play();
}
}
 

mais je dois oublier quelque chose :evil:

si quelqu'un pouvez me jeter sur une piste

merci
L

#2 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 19 May 2014 - 17:32 PM

Salut,

Essayes avec :

if (myEvent.keyCode == 32)
{
  spacebarPressed = !spacebarPressed;
}

En gros quand tu appuies sur la barre espace la valeur de spacebarPressed s'inverse (true devient false et inversement).
Attention à la répétition des touches qui s'enclenche si tu reste appuyé trop longtemps.

#3 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 19 May 2014 - 17:42 PM

salut

sans fla moins facile pour la reponse donc j'ai fait le miens.
en piece joint le swf

deja ton code

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
ou se trouve ta function keyup
var spacebarPressed:Boolean = false;
function keydown(myEvent:KeyboardEvent):void
{
if (myEvent.keyCode == 32) ici dans ta condition a chaque fois que tu appuis sur ta barre c'est le code 32
donc toujours stop je te conseille if (myEvent.keyCode == 32 && spacebarPressed == false )
{
spacebarPressed = true;
stop();
}
else{
spacebarPressed = false;
play();
}
}

Fichier(s) joint(s)



#4 slexip2

    Ceinture Jaune

  • Members
  • PipPip
  • 15 messages

Posté 19 May 2014 - 17:59 PM

Merci messieurs

effectivement il en manquait des "bouts"
cela fonctionne avec :

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyup);

var spacebarPressed:Boolean = false;
function keydown(myEvent:KeyboardEvent):void
{
if (myEvent.keyCode == 32 && spacebarPressed == false )
{
spacebarPressed = true;
stop();
}
else{
spacebarPressed = false;
play();
}
}
function keyup(myEvent:KeyboardEvent):void
{
if (myEvent.keyCode == 32 && spacebarPressed == false )
{
spacebarPressed = false;
stop();
}
else{
spacebarPressed = true;
play();
}
}
 

c'est joli ??
merci encore

#5 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 19 May 2014 - 18:02 PM

c'est moi qui est une question maintenant
pourquoi

stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
function keyup(myEvent:KeyboardEvent):void
{
if (myEvent.keyCode == 32 && spacebarPressed == false )
{
spacebarPressed = false;
stop();
}
else{
spacebarPressed = true;
play();
}
}
ca sert a rien moi ca marche sans.

gustave02

#6 slexip2

    Ceinture Jaune

  • Members
  • PipPip
  • 15 messages

Posté 19 May 2014 - 18:15 PM

Euh :roll:
pour introduire la function "keyup"

euh après test !!
effectivement la function "keyup" ne sert à rien.... :oops: :oops:

merci
L


stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
var spacebarPressed:Boolean = false;
function keydown(myEvent:KeyboardEvent):void
{
if (myEvent.keyCode == 32 && spacebarPressed == false )
{
spacebarPressed = true;
stop();
}
else{
spacebarPressed = false;
play();
}
}
 


#7 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 19 May 2014 - 18:47 PM

Ceci devrait marcher et semble plus simple, non ?

var spacebarPressed:Boolean = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);

function keydown(e:KeyboardEvent):void{
    if (e.keyCode == 32){
        stop();
        spacebarPressed = !spacebarPressed;
        if(spacebarPressed) play();
    }
}
 


#8 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 19 May 2014 - 19:14 PM

c'est plus condensé
ca fonctionne
c'est plus difficile a comprendre pour un debutant.

je suis curieux
est ce que c'est plus rapide ?
vu qu'on a deux conditon if ?

gustave02

#9 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 19 May 2014 - 19:32 PM

Citation

c'est plus difficile a comprendre pour un debutant.

Pourquoi ?
C'est pourtant bien plus logique si tu traduit le code :

// interrupteur
var spacebarPressed:Boolean = false;

// écoute les touches enfoncées
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);

// quand une touche est enfoncée
function keydown(e:KeyboardEvent):void{
       
        // si c'est la touche ESPACE
        if (e.keyCode == 32){
               
                //stoppe la lecture
                stop();
               
                // inverse la position de l'interrupteur
                spacebarPressed = !spacebarPressed;
               
                // si l'interrupteur est allumé, relance la lecture
                if(spacebarPressed) play();
        }
}

Pourquoi faire compliqué quand on peut faire simple ;-)

Citation

est ce que c'est plus rapide ?
vu qu'on a deux conditon if ?

Heuuu.... la rapidité en ce qui concerne l'appui sur la touche espace je ne pense pas qu'on puisse sincèrement faire une différence en fait.
Là le but n'est pas d'optimiser le fonctionnel, mais de proposer une solution pour rendre son code plus lisible tout en réduisant sa longueur.

L'autre problème avec ce code... :

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
var spacebarPressed:Boolean = false;
function keydown(myEvent:KeyboardEvent):void{
        if (myEvent.keyCode == 32 && spacebarPressed == false){
                spacebarPressed = true;
                stop();
        }else{
                spacebarPressed = false;
                play();
        }
}

...c'est que n'importe quelle touche va aussi relancer la lecture :)

En fait il aurait fallu écrire :

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
var spacebarPressed:Boolean = false;
function keydown(myEvent:KeyboardEvent):void{
        if (myEvent.keyCode == 32){
                if(spacebarPressed == false){
                        spacebarPressed = true;
                        stop();
                }else{
                        spacebarPressed = false;
                        play();
                }
        }
}


#10 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 19 May 2014 - 20:08 PM

oui
tu as raison. j'essayerai de reproduire cette logique.
merci pour les explications
@+

#11 slexip2

    Ceinture Jaune

  • Members
  • PipPip
  • 15 messages

Posté 20 May 2014 - 10:43 AM

merci à vous deux.




Répondre à ce sujet



  

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