Forums Développement Multimédia

Aller au contenu

soundChannel > .stop() supprime la "channel" ?

CODE Actionscript

7 réponses à ce sujet

#1 3akycka

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 314 messages

Posté 08 November 2008 - 21:33 PM

Bonjour,

quand on fait quelque chose comme :
var piste1:soundChannel;
soundChannel = son.play();


puis plus tard:
piste1.stop();

puis à nouveau :
piste1=son.play();

est-ce que le stop() supprime la "channel" créée par le premier play();
ou bien quand on fait le deuxième play() ça rajoute une nouvelle "channel" et la première reste présente bien que stopée ?

Modifié par 3akycka, 08 November 2008 - 21:35 PM.


#2 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 08 November 2008 - 21:37 PM

Salut,

Le 1° est libéré.

#3 Logic

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2733 messages

Posté 08 November 2008 - 21:46 PM

Teste !

Action Script


var piste:SoundChannel;
piste = son.play();

piste.stop();
trace(piste); // vais-je avoir un objet ou un null ?
var vieillePiste:SoundChannel = piste;

piste = son.play();
trace(piste == vieillePiste); // pour voir si un nouveau channel a ete cree

De toute façon, j'ai envie de te dire qu'on s'en fout, parce qu'une fois le channel stopé, qu'est ce qu'on peut en faire ? Rien, c'est bon pour la poubelle... bandit.gif

#4 3akycka

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 314 messages

Posté 10 November 2008 - 15:50 PM

Merci !

Du coup, il y a un truc que je ne comprend pas bien, qd je trace avec un listener "enterframe" la position du son :
> quand la piste est lue la position augmente, normal.
> mais lorsque que je stop la piste alors la position n'augmente plus mais elle continue de s'afficher, sans message d'erreur disant que l'objet SoundChannel n'existe plus.

#5 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 10 November 2008 - 18:56 PM

Salut
il suffit de deleter ton onenterframe non ?

#6 3akycka

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 314 messages

Posté 10 November 2008 - 19:50 PM

Citation (jeanphilippe @ Nov 10 2008, 05:56 PM) Voir le message
Salut
il suffit de deleter ton onenterframe non ?

oui bien sur ça arreterais de tracer la position, mais je fais justement exprès de tracer ça dans avec l'enterframe, juste pour voir ce qu'est devenu la piste après le stop, et la je vois qu'elle est encore présente, je peux toujours accéder à l'objet SoundChannel malgré le stop.
Je veux juste comprendre exactement ce qu'il se passe.

#7 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 10 November 2008 - 20:47 PM

C'est le comportement du Garbage Collector, les objets non utilisés seront nettoyés... quand il l'aura décidé.
Avec le Flash Player debug, fais un test avec System.gc(). wink.gif
Et puis d'ailleurs, après test, peut-être que l'objet sera toujours existant, çà dépend comment sont implémentés les canaux dans le FP.
Il y en a 32 dispos. Et quand tu fais un stop() sur l'un, la seule chose à savoir c'est qu'il est libéré. Pour le reste, comme disait Logic, on s'en fout. smile.gif

#8 3akycka

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 314 messages

Posté 11 November 2008 - 08:45 AM

Citation (dada @ Nov 10 2008, 07:47 PM) Voir le message
C'est le comportement du Garbage Collector, les objets non utilisés seront nettoyés... quand il l'aura décidé.
Avec le Flash Player debug, fais un test avec System.gc(). wink.gif
Et puis d'ailleurs, après test, peut-être que l'objet sera toujours existant, çà dépend comment sont implémentés les canaux dans le FP.
Il y en a 32 dispos. Et quand tu fais un stop() sur l'un, la seule chose à savoir c'est qu'il est libéré. Pour le reste, comme disait Logic, on s'en fout. smile.gif


ok merci, c'est clair maintenant !
à bientôt



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

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