Difference Online / Offline (player music)

Difference Online / Offline (player music) - Flash/ActionScript - Programmation

Marsh Posté le 23-09-2009 à 05:38:37    

Bonjour tout le monde,
je repost ici après m'être trompé de section
(j'avais deja posté dans webdesign)
 
Je vous explique mon souci.. je sui tout fier de moi, bien que assez debutant en Action script j'ai reussi a faire un beau player flash AS2
Il marche nickel en local.
 
Mais quand je le met sur mon site, les images associé aux chansons ne se chargent que une fois sur deux .. :(
Si quelqun a une idée d'ou peux venir le problème:
je vous laisse mon code dans son entierté: (cela pourra peu êre servir a quelqun qui voudrait réaliser un player, car mis à part ca il fonctionne :) )
 
mais pas la peine a priori de tout checker; la fonction incriminée se trouve à la fin du code: chargeimage();
 

Code :
  1. var flag =false;
  2. //verifis que le playr n'est pas encore lancer
  3. var chanson = 0;
  4. //variable de la chanson en cours de lecture
  5. var p=0;
  6. //variable de la position du son intialise a 0
  7. var totalsuiv:Number = 0;
  8. var chargesuiv:Number = 0;
  9. var pourcensuiv:Number = Math.round(chargesuiv/totalsuiv*100);
  10. //var du chargement image
  11. Fichier_XML = new XML();
  12. //crée une variable xml
  13. Fichier_XML.ignoreWhite = true;
  14. //ignore les saut de ligne blanc etc...
  15. if (_root.liste == undefined) {
  16.     _root.liste = "son";
  17.     // = tu affecte la valeur
  18. }
  19.  
  20. Fichier_XML.load(_root.liste+".xml" );
  21. /* pour aller cherche le fichier XML ; dans le code html object du flash: ajouter un parametre avec dreamweaver dans
  22. propriété. paramater: flashvars et value: liste=son pour son nom du fichir xml
  23. */                                
  24. var musica = new Array();
  25. var artiste = new Array();
  26. var titre = new Array();
  27. var logo = new Array();
  28. var sons = new Array();
  29. //array créer un tableaux
  30. Fichier_XML.onLoad = function(Reussite) {
  31.     if (Reussite) {
  32.         for (i=0; Fichier_XML.childNodes[0].childNodes[i]!=undefined; i++) {
  33.             /*boucle tant qu'on a un son qui porte ce numeros i
  34.             on stocke le chemin del'image dans la variable image
  35.              initialisation; condition; incrémentation (!= est différent)*/
  36.              musica[i] =  Fichier_XML.childNodes[0].childNodes[i].childNodes[0].firstChild;
  37.              artiste[i] =  Fichier_XML.childNodes[0].childNodes[i].childNodes[1].firstChild;
  38.              titre[i] =  Fichier_XML.childNodes[0].childNodes[i].childNodes[2].firstChild;
  39.              logo[i] =  Fichier_XML.childNodes[0].childNodes[i].childNodes[3].firstChild;
  40.              sons[i] = new Sound ();
  41.              //on rempli le tableaux (array) par tout les son du xml
  42.              _root.conteneurtitre.attachMovie("titremusica","titremusica"+i,i+10);
  43.              eval("_root.conteneurtitre.titremusica"+i).textmusica.text = titre[i];
  44.              eval("_root.conteneurtitre.titremusica"+i).textartist.text = artiste[i];
  45.              //attention dans eval tout doit etre pris dans les guillemet
  46.               
  47.              textmusica.autoSize = true;
  48.              eval("_root.conteneurtitre.titremusica"+i)._x = 100;
  49.              eval("_root.conteneurtitre.titremusica"+i)._y = 18*i+18;
  50.              eval("_root.conteneurtitre.titremusica"+i).num = i;
  51.              //on associe une variable numerique au movie clip quon a cree
  52.               
  53.              //BOUTON ACTIF MUSIK OU PAS:
  54.              eval("_root.conteneurtitre.titremusica"+i).attachMovie("bib","bib_load",1);
  55.              eval("_root.conteneurtitre.titremusica"+i).bib_load._x = -100;
  56.              eval("_root.conteneurtitre.titremusica"+i).bib_load._y = -8;
  57.              eval("_root.conteneurtitre.titremusica"+i).bib_load.stop();
  58.              eval("_root.conteneurtitre.titremusica"+i).bib_load._visible = false;
  59.  
  60.     
  61.                      eval("_root.conteneurtitre.titremusica"+i).onPress = function() {
  62.                         flag = true;
  63.                         //eval voir si la chaine de caractere existe
  64.                         for (j=0;j<sons.length;j++) {
  65.                             sons[j].stop();
  66.                         }
  67.                         //boucle pour arreter tous les son existant. lenght= nombre d'element exsitant dans l'array sons
  68.                         if (_root.sons[this.num].duration==undefined) { //this.num car on est actuellement dans le onpress de titre.musica
  69.                             _root.sons[this.num].loadSound (_root.musica[this.num],true); //true= oui streaming ; attachSound si le son etait dans la bibliotheque
  70.                         }
  71.                         else {
  72.                             if (_root.sons[this.num].position == _root.sons[this.num].duration) {
  73.                             _root.p == 0;
  74.                             }
  75.                         _root.sons[this.num].start(_root.p/1000);
  76.                         //demarre la ou la variable position c'est arrêter
  77.                         }
  78.                         eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=false;
  79.                          this.bib_load.play();
  80.                          this.bib_load._visible=true;
  81.                         vol = _root.sons[_root.chanson].getVolume();
  82.                         _root.sons[this.num].setVolume(vol);
  83.                         //Le volume du son de la chason egal le volum de _root.chanson qui est celle d'avant car pas encore defini
  84.                         _root.chanson = this.num;
  85.                         //definis une variable chanson avec un numeros representant la chanson en cours
  86.                         chargeimage();
  87.                         avancement();
  88.                     }
  89.     }
  90.  }
  91. }
  92. // CHARGE LIMAGE DE DEPART::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  93. _root.onEnterFrame = function () {
  94.     chargeimage();
  95. }
  96. // BOUTON PLAY::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  97. _root.player.debut.onPress = function () {
  98.     if(_root.flag==false){
  99.             var flag = true;
  100.             _root.sons[_root.chanson].loadSound (_root.musica[_root.chanson],true);
  101.             eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=true;
  102.              this.bib_load.play();
  103.             chargeimage();
  104.             avancement();
  105.     }
  106.     else{
  107.         eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.play();
  108.         if(_root.sons[_root.chanson].position == _root.sons[_root.chanson].duration) {
  109.                 p==0;//retour au debut si position son total
  110.         }
  111.         _root.sons[_root.chanson].start(_root.p/1000);
  112.     }
  113. }
  114.  
  115. // BOUTON STOP::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::        
  116. _root.player.enpause.onPress = function () {
  117.     eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.stop();
  118.     for (j=0;j<sons.length;j++) {
  119.     sons[j].stop();
  120.     }
  121.     _root.p= _root.sons[_root.chanson].position;
  122. }
  123.  
  124. // BOUTON SUIVANT::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  125. _root.player.suivant.onPress = function () {
  126.     if(_root.flag==true){
  127.             chansonsuivante();
  128.     }
  129. }
  130.  
  131. // BOUTON PRECEDENT::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  132. _root.player.precedent.onPress = function () {
  133.     if(_root.chanson>0){
  134.         _root.sons[_root.chanson].stop();
  135.         vol = _root.sons[_root.chanson].getVolume();
  136.         eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=false;
  137.         _root.chanson --;
  138.         eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=true;
  139.         _root.sons[_root.chanson].setVolume(vol);
  140.         eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.play();
  141.         if (_root.sons[_root.chanson].duration==undefined) {
  142.                 _root.sons[_root.chanson].loadSound (_root.musica[_root.chanson],true);
  143.         }
  144.         chargeimage();
  145.     }
  146.     _root.sons[_root.chanson].start(0);
  147. }
  148.  
  149. // DEPLACEMENT SUR BARRE DE PROGRESSION:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  150. _root.progression.onPress = function () {
  151.     var temps = (_root._xmouse-this._x)/this._width;
  152.     _root.sons[_root.chanson].stop;
  153.     _root.sons[_root.chanson].start((_root.sons[_root.chanson].duration)*temps/1000);
  154.     
  155. }
  156.  
  157. // LES FONCTIONS::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::        
  158.  
  159. chansonsuivante = function(){
  160.                 if(_root.chanson<(i-1)){
  161.                     _root.sons[_root.chanson].stop();
  162.                     vol = _root.sons[_root.chanson].getVolume();
  163.                     eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=false;
  164.                     _root.chanson ++;
  165.                     eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=true;
  166.                     _root.sons[_root.chanson].setVolume(vol);
  167.                     eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.play();
  168.                     if (_root.sons[_root.chanson].duration==undefined) {
  169.                     _root.sons[_root.chanson].loadSound (_root.musica[_root.chanson],true);
  170.                     }
  171.                     chargeimage();
  172.                 }
  173.                 else{
  174.                     _root.sons[_root.chanson].stop();
  175.                     vol = _root.sons[_root.chanson].getVolume();
  176.                     eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=false;
  177.                     _root.chanson = 0;
  178.                     eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=true;
  179.                     _root.sons[_root.chanson].setVolume(vol);
  180.                     eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.play();
  181.                     if (_root.sons[_root.chanson].duration==undefined) {
  182.                     _root.sons[_root.chanson].loadSound (_root.musica[_root.chanson],true);
  183.                     }
  184.                     chargeimage();
  185.                 }
  186.         _root.sons[_root.chanson].start(0);
  187.     
  188. }
  189.  
  190. chargeimage = function(){
  191.     if (_root.logo[_root.chanson]!= undefined) {
  192.         _root.imageson.loadMovie(_root.logo[_root.chanson]);        
  193.                 this.onEnterFrame = function():Void {
  194.                     totalsuiv = _root.imageson.getBytesTotal();
  195.                     chargesuiv = _root.imageson.getBytesLoaded();
  196.                     pourcensuiv = Math.round(chargesuiv/totalsuiv*100);
  197.                     if (pourcensuiv == 100) {
  198.                         //si oui, le chargement est fini, on supprime écouteur pour ne plus exécuter tout ça
  199.                         delete this.onEnterFrame;
  200.                         //ici on est sûr que notre image (ou swf) est bien chargée, on peut la redimensionner ou accéder aux éléments de notre swf
  201.                         _root.imageson._width = 95;
  202.                         _root.imageson._height = 95;
  203.                     }
  204.                 }
  205.                                                 
  206.         }
  207.         else {
  208.             _root.imageson.unloadMovie();
  209.         }
  210.     
  211. }
  212.  
  213. avancement = function(){
  214.     _root.progression.progressionbar.onEnterFrame = function(){
  215.         this._width = (_root.sons[_root.chanson].position/_root.sons[_root.chanson].duration)*215;
  216.         if (this._width == 215){
  217.             chansonsuivante();
  218.         }
  219.     }
  220. }


Message édité par castelcerf le 25-09-2009 à 18:36:26
Reply

Marsh Posté le 23-09-2009 à 05:38:37   

Reply

Marsh Posté le 23-09-2009 à 07:37:59    

Petite astuce pour le forum, : Pour l'AS, la coloration syntaxique est plus efficace avec la balise [code=actionscript] ....
Sinon je vois que le rajout du "_root" n'a rien changé...  
As-tu essayé de mettre un trace(pourcent) pour vérifier ?
Sinon, le else vide est de trop, même si ce n'est pas lui le responsable de ton problème...
 
Sinon, tes variable ne sont pas toujours déclarée (avec le mot "var" ), hors, "image" est peut-etre deja réservé à AS2 (c'est le cas si le nom de la var apparait en bleu)...
 
Si tu es en phase d'apprentissage, converti toi à l'AS3, c'est chiant au début mais au moins ça t'oblige à pondre un code propre, et les erreur générés te pistent un maximum vers les erreur eventuels...


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 23-09-2009 à 17:54:57    

Merci pour l'astuce j'ai editer mon premier message.
Bon j'ai rajouter les var, et supprimer l'else mais cela ne change rien. :/
 
Par contre j'ai fais les trace et effectivement pourcentsuiv est undefined... On avance :) ... Mais je vois pas à cause de quoi ?
 
par contre tolalsuiv et chargesuiv sont defini, en local evidement il donne direct le meme nombre
 
Une idée pourquoi il n'est pas définis ??
 
Pour l'as3 je suis bien d'accord seulement j'ai fait une formation as2 ce printemps (le formateur connaissais à regret pas encore l'as3..) et vu que j'avais en plus quelques base. Pour l'instant pas eu le courage de m'y mettre parait c'est très different en plus :/
En vu que je me suis mis aussi au javascript et un peu au php... Alors qu'a la base e suis Graphiste et peintre lol ... ca fait un peu bcp pour moi :)
Donc l'as3 pas pour de suite j'ai peur.


Message édité par castelcerf le 23-09-2009 à 17:57:18
Reply

Marsh Posté le 23-09-2009 à 20:22:01    

Je suis moi même graphiste peintre, tu n'as donc aucune excuse :o
Plus sérieusement, AS3 est plus apparenté aux langages tel que JS / C que AS2 ! mais bon... Je te dis ça parceque j'ai moi même commencé la prog avec AS2
 
Pour ton PB, je sais pas trop...
chargesuiv et totalsuiv sont eux aussi undefined ?


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 23-09-2009 à 21:26:31    

Bah non justement eux sont definis .....        ><;
C'est etrangeD'un autre coté... même si cela ne marche que 1 fois sur deux online quand cela fonctionne cela redimensionne l'image donc il verifis la condition pourcentsuiv == 100 .. a piori...


Message édité par castelcerf le 23-09-2009 à 21:28:42
Reply

Marsh Posté le 24-09-2009 à 10:15:13    

Bon, j'avais pas fais gaffe à ton effort pour declaré proprement les var... mais deja il faudrait que tu déclare les var dediées au chargement en dehors de l'enterFrame (parceque la, il les redéclare à chaque frame !!!)

Code :
  1. function chargeimage()
  2. {
  3.    if (_root.logo[_root.chanson]!= undefined)
  4.    {
  5.        _root.imageson.loadMovie(_root.logo[_root.chanson]);
  6.        var totalsuiv:Number;
  7.        var chargesuiv:Number;
  8.        var pourcensuiv:Number;
  9.  
  10.        this.onEnterFrame = function():Void
  11.        {
  12.            totalsuiv = _root.imageson.getBytesTotal();
  13.            chargesuiv = _root.imageson.getBytesLoaded();
  14.            pourcensuiv = Math.round(chargesuiv/totalsuiv*100);
  15.  
  16.            if (isNaN(pourcensuiv) || pourcensuiv == undefined) // Condition si c'est pas nombre (is Not A Number) ou qu'il est indéfini
  17.            {
  18.                pourcensuiv = 0;
  19.            }
  20.  
  21.            else if (pourcensuiv == 100)
  22.            {
  23.                _root.imageson._width = 95;
  24.                _root.imageson._height = 95;
  25.                delete this.onEnterFrame;
  26.            }
  27.  
  28.        }  
  29.                                            
  30.    }
  31.  
  32.    else
  33.    {
  34.        _root.imageson.unloadMovie();
  35.    }
  36.  
  37. }


Bon, ce n'est pas très propre de rester sur ce onEnterframe ici, surtout que je ne connais pas ta scene mais bon...


Message édité par abais le 24-09-2009 à 10:20:33

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 28-09-2009 à 04:06:26    

Merci abais, mais Helas non rien a faire ca change pas.
C'est vraiment un problème étrange. Snif
Enfin c'est pas dramatique mon player marche :) ...
Juste un peu dommage après tant de boulot de secher la.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed