Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1473 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Objet sound() dans un clip chargé par loadClip

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Objet sound() dans un clip chargé par loadClip

n°1266605
incognito1​3
Posté le 14-12-2005 à 17:44:07  profilanswer
 

Salut all  :hello: ,
 
J'au un ptit soucis avec l'objet sound d'ActionScript.
 
J'ai un ptit preloader qui loadClipe (lol) mon clip préchargé sur la scène principale, une fois le chargement effectué.
 
Dans le fla de la scene principale, j'ai un objet sound que voilou :
 

Code :
  1. // GESTION DU SON
  2. monSon = new Sound();
  3. monSon.attachSound("zik" );
  4. monSon.setVolume(20);
  5. monSon.start();
  6. function baisserVol() {
  7. this.onEnterFrame = function() {
  8.  if (monSon.getVolume()>0) {
  9.   baisse = monSon.getVolume()-2;
  10.   monSon.setVolume(baisse);
  11.  } else {
  12.   this.onEnterFrame = false;
  13.   return false;
  14.  }
  15. };
  16. }
  17. function monterVol() {
  18. this.onEnterFrame = function() {
  19.  if (monSon.getVolume()<20) {
  20.   montee = monSon.getVolume()+2;
  21.   monSon.setVolume(montee);
  22.  } else {
  23.   this.onEnterFrame = false;
  24.   return false;
  25.  }
  26. };
  27. }


 
Le soucis c'est que, lorsque je lance le swf principal "dans" mon loader, la musique ne démarre pas. Par contre si je lance le swf principal "manuellement" (sans passer par le preloader), ca fonctionne.
Je pense que le probleme vient du fait que les 2 swf n'utilisent pas la même bibliothèque, et que du coup, la ligne "monSon.attachSound("zik" );" est foireuse.
 
Qu'en pensez vous messieurs ?  :p  
 
Merci d'avance a tlm.
 
PS :
 
Je met le code du loader, ca peut ptet servir..
 

Code :
  1. var image:MovieClip = this.createEmptyMovieClip("image", this.getNextHighestDepth());
  2. var mcLoader:MovieClipLoader = new MovieClipLoader();
  3. var listener:Object = new Object();
  4. listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void  {
  5. progression = (bytesLoaded/bytesTotal)*100;
  6. loading = Math.round(progression)+" %";
  7. barreloadover._width = progression*2;
  8. if (bytesLoaded == bytesTotal) {
  9.  clearInterval(interval.id);
  10.  gotoAndPlay(10);
  11. }
  12. };
  13. mcLoader.addListener(listener);
  14. mcLoader.loadClip("principal.swf", image);
  15. var interval:Object = new Object();
  16. interval.id = setInterval(checkProgress, 10, mcLoader, image, interval);
  17. function checkProgress(mcLoader:MovieClipLoader, image:MovieClip, interval:Object):Void {
  18. var progress:Object = mcLoader.getProgress(image);
  19. }


mood
Publicité
Posté le 14-12-2005 à 17:44:07  profilanswer
 

n°1266900
Mr Mala
Posté le 15-12-2005 à 00:47:48  profilanswer
 

monSon = new Sound(this);
.. pour que ton son soit attaché à cette instance de mc en particulier ...
 
Et évite  
this.onEnterFrame = false;
mais plutôt
delete this.onEnterFrame;

n°1267638
alpseb
Posté le 15-12-2005 à 16:27:25  profilanswer
 

arf, j'ai le même problème...
 
en fait, je fait des animations... avec jusqu'a 8 niveaux de clips imbriqués...
j'ai besoin de pouvoir appeler un son n'importe quand depuis n'importe ou...
 
j'ai fait un :
 

Code :
  1. // on crée un objet son accessible depuis partout
  2. _global.monSon = new Son();


 
je l'appèle avec :
 

Code :
  1. _global.monSon.jouerSon("p01_sb01_s01.wav" )


 
 
 
dans ma classe son j'ai :
 

Code :
  1. class classes.Son extends Sound{
  2.   private var monSon:Sound;
  3.           function Son(){
  4.   monSon = new Sound();
  5.   }
  6. public function jouerSon(__monSon:String):Void{
  7.   trace("on joue : " +__monSon )
  8.   stopAllSounds();
  9.   monSon.attachSound(__monSon)
  10.   monSon.start();
  11.   }
  12. }//classe


 
 
 
 
bon, c'est pas super top... mais c'est adapté a mes anims....
tout marche bien c'est top
 
par contre, des que n'importe dans un autre swf pour faire un loading propre, ca marche plus !
 
la fonction est bien toujours appelée, le
trace("on joue : " +__monSon )
marche toujours bien par contre, le son n'est pas attaché... et ne se joue pas !
 
http://alpseb.free.fr/smart/liaisonSon.gif

n°1267737
Mr Mala
Posté le 15-12-2005 à 17:12:39  profilanswer
 

Mmmmmmh elle est "bizarre" ta classe 'Son' !! ( j'avais mis "foireuse" au départ mais ça risque de choquer .. alors disons juste "bizarre" )
 
Tu crées une classe qui dérive de Sound .. donc qui possède toutes les propriétés et fonctions de Sound .. et dans son constructeur, tu redéclares un objet Sound !!!
 
Tu m'expliques l'intérêt ???
 
Soit tu vires le 'extends Sound', soit tu vires le constructeur et tu remplaces 'monSon' par 'this' dans la fonction jouerSon ...
Sinon, tu te retrouves avec un objet Sound dans un dérivé de l'objet Sound ... :heink:
 
 

n°1267802
alpseb
Posté le 15-12-2005 à 17:52:18  profilanswer
 

Mr Mala a écrit :

Mmmmmmh elle est "bizarre" ta classe 'Son' !! ( j'avais mis "foireuse" au départ mais ça risque de choquer .. alors disons juste "bizarre" )
 
Tu crées une classe qui dérive de Sound .. donc qui possède toutes les propriétés et fonctions de Sound .. et dans son constructeur, tu redéclares un objet Sound !!!
 
Tu m'expliques l'intérêt ???
 
Soit tu vires le 'extends Sound', soit tu vires le constructeur et tu remplaces 'monSon' par 'this' dans la fonction jouerSon ...
Sinon, tu te retrouves avec un objet Sound dans un dérivé de l'objet Sound ... :heink:


 
 
hello, merci de porter un peu d'intéret a mes classes foireuses !!!
je t'explique le topo : je suis une brelle et je suis débutant AS 2... ya pas mal de conceptes qui m'achapent mais petit a petit je progresse...
ca me sauve la vie sur certains projets qui sont trop compliqués pour faire du AS1
 
bref, j'ai besoin de gérer un son...
un seul en meme temps (de la voie) voila pourquoi je cré un seul objet son... ca me permet d'etre sur que jamais ils vont se chevaucher...
 
je voulais une classe pour gérer mon son et pouvoir l'appeler de n'importe ou... que ca, rien d'autre. elle est donc tout petite...
j'ai essayé de faire une classe a la con, une static et d'autres trucs... mais c'est un peu flou pour moi et ca marchais pas bien... j'avias pas acces a la classe Sound depuis les classes que j'avais fait... bref, j'ai fais un truc qui hérite de sound pour utiliser ses méthodes...
 
c'est surement tres nul et je suis ouvert a 100% si t'as une proposition qui corespond a mon probleme ...
t'aurrasi fais quoi comme classe ?
 
 
 
maintenant j'ai ca :
 

Code :
  1. class classes.Son extends Sound{
  2. //--o  private properties
  3.  // constructeur
  4. function Son(){
  5.  trace("---------o classe Son" )
  6.  }
  7. //--o methode public
  8. public function jouerSon(__monSon:String):Void{
  9.  trace("on joue : " +__monSon )
  10.  stopAllSounds();
  11.  this.attachSound(__monSon)
  12.  this.start();
  13.  }
  14. }//classe


 
ca marche bien dans le swf mias toujours pareil, quand je le load dans un autre, la fonction jouerSon est bien appelée, (j'ai bien mon trace) mais pas de son...  
 
 
si tas une idée !
merci beaucoup pour ton aide en tous ca s!!  :hello:

n°1267906
Mr Mala
Posté le 15-12-2005 à 19:39:21  profilanswer
 

Ben voilà .. CA, c'est une "belle" classe propre ! :p
 
Bon, la solution, je l'ai donnée plus haut tu sais !
 
Donc, ta classe, avec passage d'un MovieClip en paramètre, deviendrait :

Code :
  1. class classes.Son extends Sound {
  2. function Son(mc:MovieClip) {
  3.   if(mc) {
  4.    super(mc);
  5.   }
  6.   else {
  7.    super();
  8.   }
  9. }
  10. public function jouerSon(__monSon:String):Void {
  11.   stopAllSounds();
  12.   this.attachSound(__monSon)
  13.   this.start();
  14. }
  15. }


n°1271084
alpseb
Posté le 21-12-2005 à 10:45:40  profilanswer
 

hello !  
merci pour tes infos !
j'ai modifier ma classe comme ca
le super ca veux dire quoi exactement ????....
je comrpend pas trop comment ca marche la :/
 
sinon, ca marche nikel dans mon flash, mais une fois mon SWF loadé dans un autre, comme avant... il veux pas attacher le son... je sais pas trop pourquoi !

n°1271258
Mr Mala
Posté le 21-12-2005 à 14:08:10  profilanswer
 

super() = appel du constructeur de la classe héritée ( le parent )
 
Et si ça ne marche toujours pas, c'est parce que je parie que tu n'as toujours pas fait  
_global.monSon = new Son(this);  

n°1271309
alpseb
Posté le 21-12-2005 à 14:52:55  profilanswer
 

WOOOOOO merci !!!
ca marche nikel ! super !!! merci bien ::) :) :) :) :)
 
bon alors, pour aller ma coucher moins con :
 

  • le super appel le construteur de la classe parent... ok... mais ca me sert a quoi ? a initialiser vraiment toutes les méthodes de Sound pour mon objet Son ?... je suis pas sur de saisir vraiment...
  • pourquoi passer un mc au constructeur ?
  • le else sert a quoi ? il sera actif dans quel cas ?
  • pourquoi passer un mc en parametre fais marcher le tout ?


 
merci d'avance :) :hello:

n°1271359
alpseb
Posté le 21-12-2005 à 15:56:40  profilanswer
 

si par exemple je veux utiliser une classe qui manipule des objets XML, je peut faire une :  
 
class Gestionxml extends XML {
}  
 
??.....
 
il faut que je remete un super ??
pour passer par exemple le XML à gérer, tu le passe donc pas dans le construteur mais plutot avec une méthode publique ,?
 
désolé pour mes questions de boulet, c'est pas évient à assimiler...

mood
Publicité
Posté le 21-12-2005 à 15:56:40  profilanswer
 

n°1271360
alpseb
Posté le 21-12-2005 à 15:57:13  profilanswer
 

tiens au fait, j'adore ton jeu avec les petits cubes... j'ai fais 60 niveaux du niveau facile :d

n°1271368
Mr Mala
Posté le 21-12-2005 à 16:07:09  profilanswer
 

alpseb a écrit :

WOOOOOO merci !!!
ca marche nikel ! super !!! merci bien ::) :) :) :) :)


 
Ben tiens tu m'étonnes ! :D ... tss tss tss encore un qui s'imagine que je poste "des trucs" sans vérifier avant !  :whistle:  
 

alpseb a écrit :


  • le super appel le construteur de la classe parent... ok... mais ca me sert a quoi ? a initialiser vraiment toutes les méthodes de Sound pour mon objet Son ?... je suis pas sur de saisir vraiment...



 
En gros ... en très gros ...
 

alpseb a écrit :


  • pourquoi passer un mc au constructeur ?



 
Parce que je me tue à dire depuis le 2ème message de ce topic que Sound() peut avoir un MovieClip comme paramètre ... :ange:  
C'est clairement dans la doc en ligne dans l'éditeur Flash en plus ... je suis pas magicien, j'ai rien inventé ...
 
Et du coup, on passe ou pas ce paramètre facultatif au constructeur de la classe parent.
 

alpseb a écrit :


  • le else sert a quoi ? il sera actif dans quel cas ?



 
Ben quand il n'y aura pas de paramètre justement ...
 

alpseb a écrit :


  • pourquoi passer un mc en parametre fais marcher le tout ?



 
Je cherche toujours une explication simple et logique ... mais je te tiens au courant ...
Tout ce que je sais, c'est que Sound() définit un objet son global qui contrôle tout les sons de l'anim ..
Et Sound(target_MC) définit un objet son local à un movieclip ...
Cf doc online toujours ..


Message édité par Mr Mala le 21-12-2005 à 16:08:15
n°1271509
alpseb
Posté le 21-12-2005 à 19:19:17  profilanswer
 

merci pour tes réponses
 :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Objet sound() dans un clip chargé par loadClip

 

Sujets relatifs
Besoin d'aide sur setInterval et javascript orienté objet...Probleme avec les Variable dans l'objet RUN
[php] Programmation objet, probleme d'inclusionVB6 : Grid a imprimer sans l'objet "Printer"
bouton dans un clip[Flash MX] réactiver un bouton a partir d'un clip
Lier un controle textbox à une propriete d'un objetLes bases de la méthodologie objet
Créer un contrôle dans une Form depuis un objet ?VBA-ACCESS - insert objet dans fichier Excel
Plus de sujets relatifs à : Objet sound() dans un clip chargé par loadClip


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR