Debug d'un player music xml. AS2 [Résolu]

Messages postés
9
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
12 novembre 2009
- 10 nov. 2009 à 23:34 - Dernière réponse :
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Dernière intervention
31 janvier 2010
- 14 nov. 2009 à 01:49
Salut tout le monde;

Je viens sur le forum car je suis désespérer.
J'ai fait un ptit site bénévolement pour un crew de muicien que je connais dans un bon état d'esprit; aussi je voulais faire un truc chouette, et créer le player flash spécific pour le site. Utilisant du xml pour chercher les chansons.

je me suis bien cassé la tête et j'ai réussis à faire fonctionner tout cela...
Mais je suis confronter à des petit bugs que je ne m'explique pas du tout.. ca paraît illogique comme bug et j'ai beau relire mon code tout me paraît nickel.

Par exemple: une image est associé aux chansons, mais elle ne se charge que 1 chanson sur 2.

Si on lance le player en cliquant sur play, alors à la fin de la première chanson il boucle, au lieue de passé à la suivante. Mais si on bouge un tt petit peu la timeline ou qu'on change de chanson mon code marche nickel et à la fin d'une chason on passe bien à la suivante.

Ou encore; parfois au lieue de passé à la suivante hop il remonte 3 chanson en arrière .. sans raison...

je ne comprend vraiment pas. D'autant que en local sur mon ordi je n'ai pas de souci...
Si quelqun de vraiment doué en AS2 pouvait prendre le temps de relire ce que j'ai ecris et me dire ce qu'il en pense ce serait vraiment cool..
Merci d'avance pour le temps passé à aidé. Ce n'est pas urgent car ca fonctionne déjà plus ou moins; mais si ca pouvait ne plus bugger ce serait top.

Pour télécharger mon .fla et voir le code :
http://www.pipolass.net/squelettes/I...icpipolass.fla
(j'ai fait des annotations et bien ordonner mon code pour que ce soit relativement facile à comprendre)

Pour checker en line le player:
http://www.pipolass.net/-Albums-

PS: au passage pour les débutants à la recherche d'un player de music en flash/XML avec volume et tout vous pouvez télécharger mon.fla ... Malgré les bugs il marche quand même bien sur plein de point.

Cas-P.net << Graphiste webdesigner Illustrateur DJ >>
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Dernière intervention
20 juin 2014
- 12 nov. 2009 à 19:45
3
Merci
Salut Castelcerf, si tu n'arrives pas à ouvrir le fla c'est sûrement parce que tu as une version antérieure à flash 10 (cs4), je te renverrai les fichiers enregistrés en cs3 vers 21h (je finis le boulot à 20h et n'ai pas mon ordinateur perso. sous la main). Pour ce qui est de la musique qui ne se lit pas... c'est normal, je ne t'ai pas fourni le mp3, ceci dit tu peux tester avec n'importe quel mp3 en changeant simplement le nom dans le fichier xml. Je comprend que tu souhaites comprendre où sont les erreurs de ton code mais pour ma part, je sais qu'un player qui fonctionne parfaitement en local ne fonctionnera pas obligatoirement correctement une fois en ligne ; celui que j'ai actuellement pour mon site a 1 léger bug au niveau du lancement en lecture des mp3, alors qu'il marche très bien en local :

le player actuel de mon site

Par contre celui que je te renverrai tout à l'heure marche à tout point de vue et c'est ce en quoi il est intéressant.

A plus,

BBFUNK

Merci BBFUNK01 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de BBFUNK01
Messages postés
9
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
12 novembre 2009
- 10 nov. 2009 à 23:37
0
Merci
Oups le lien pour télécharger est mal passé je le remet:
TELECHARGER le .FLA
Commenter la réponse de Castelcerf
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Dernière intervention
20 juin 2014
- 11 nov. 2009 à 09:52
0
Merci
Salut Castelcerf, je ne suis pas un expert en code AS. J'ai récemment trouvé un player mp3 qui répondrait à tes attentes :
- chargement et lecture automatique de la 1ère piste de la playlist.
- je crois (car je n'ai pas encore testé) que les pistes se lisent à la suite sans click préalable.
- les commandes comprennent la gestin du volume, play, stop, piste suivante, piste précédente, barre de défilement de la piste sur laquelle on peut intervenir pour avancer ou reculer dans la piste.
- un bouton "shuffle" et un bouton "repeat".
- et enfin chargement d'une image associée à la piste qui est lue.

Si tu les souhaites indique-moi ton adresse e-mail afin que je te l'envoie, tu pourras analyser le code de ce player qui fonctionne très bien et n'a pas de bug à ma connaissance.

voici le lien du player que j'ai modifié pour mon site (j'ai refait le design et supprimer le chargement d'image associé à chaque piste)
player mp3

Au passage si tu as éventuellement une réponse à mon problème :
j'ai refait le design du player sous illustrator avec l'outil "dégradé avec ajout de point d'ancrage dans la forme", en regardant bien le design tu t'apercevras qu'à certains endroits il y a des zones qui ne sont pas nettes, donc si tu as un tuyau pour améliorer ça je suis preneur.

A plus,

BBFUNK01
Commenter la réponse de BBFUNK01
Messages postés
9
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
12 novembre 2009
- 11 nov. 2009 à 14:11
0
Merci
Salut,
oui je veux bien je pourrait toujours essayé de comparé.
Bon ca m'embête un peu de tout refaire. Mais ptet ca m'aidera...

Je t'envoi mon mail en pm

Pour illustrator je ne m'en sert pas très souvent je peux donc pas t'aider; Mais je n'ai pas vu de gros problème de graphisme sur ta mini-chaîne?
Commenter la réponse de Castelcerf
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Dernière intervention
31 janvier 2010
- 12 nov. 2009 à 01:38
0
Merci
salut,

alors désolé car mon post ne va pas beaucoup te servir, il est 1h32 et je vais aller me coucher (comment ça vous vous en fichez ?) donc je ne prendrai pas le temps de fouiner dans ton code (mis à part si tu bloques vraiment trop auquel cas je m'y collerai).

Mais j'ai quand même ouvert ton fla juste pour voir et quelques points m'ont sauté au visage. Je trouve ton code très très long juste pour lire des mp3, mais bon tu me dira, vue que je n'ai pas regardé comme il faut, mon oeil critique n'est pas trop valable pour ce détail. Par contre, j'ai pû lire des _root et des eval et là, c'est un conseil de codeur, essaye si tu peux de ne pas les utiliser à l'avenir (surtout eval beurk :p).

Ne prend surtout pas mal mes dires ce ne sont que de simples conseils et si tu as toujours des soucis après l'aide de bbfunk, n'hésite pas, j'essaye toujours d'aider si possible, là je suis fatigué et j'ai une grosse fin de semaine.

Bonne nuit !
Commenter la réponse de crackter
Messages postés
9
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
12 novembre 2009
- 12 nov. 2009 à 13:10
0
Merci
Bonjour,

Alors bbfunk je ne sais pas pourquoi mais je n'arrive pas à ouvrir le .fla que tu m'as envoyé (Quand au swf il se lance; mais pas la chanson d'exemple.)

Crakter, j'éspère que ta bien dormi, mais.. tu te couche bien tôt dis moi; moi c'est l'heure ou je commence mon film ... et pourtant me lève tôt hein... (non bon je fais le fier mais je le fais pas tt les jours :p ...) Mais hier soir j'ai matter lascar, et j'ai bien rigoler d'ailleurs , j'vous le recommande ;)

mais donc ton offre est vraiment la bienvenue, car d'abord j'arrive pas ouvrir ce .fla... ensuite je préfererai pas devoir tt refaire et en prime comprendre mes erreurs.

Bon évidement mon orgueil de devellopeur prend très très mal tes remarques ! ... mais vu que je suis avant tout graphiste, illustrateur et même accessoirement jardinier pour un potager je pense que je m'en remettrai de tes critiques sur le développement

Non sérieux j'ai fait ce player suite à une formation actionscript; Donc rien d'étonnant à ce que ce ne soit pas tip top, d'autant que j'ai bien senti que le prof était pas non plus un génie... M'enfin vu que ca marchait en local c'etait le principal. .. Je pensais pas avoir des surprise une fois mis en ligne.

Si le code est long c'est je pense parceque le player gère pas mal de chose quand même. La position du lecteur, la pause, chanson suivante automatique (enfin dans l'idée), lancement de la chanson quand on clique dessus, volume restant le même d'une chanson à l'autre.
Mais ptet ya moyen de dire tout ca en code de façon plus intelligente ca m'étonnerait pas tant que ca.

Conclusion, cracker si tu veux bien y passé un moment quand tu aura plus de temps ce serait super cool; et sinon bbfunk si tu repasse par la; tu peux ptet copier coller directement le code principal du .fla ici sur le forum ? Comme ca je pourrais comparé.

Cordialement,
Paul
Commenter la réponse de Castelcerf
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Dernière intervention
31 janvier 2010
- 12 nov. 2009 à 18:35
0
Merci
ok on regardera ça ensemble dès vendredi fin d'aprem/soir.
Commenter la réponse de crackter
Messages postés
9
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
12 novembre 2009
- 12 nov. 2009 à 18:41
0
Merci
Cool merci.
Commenter la réponse de Castelcerf
Messages postés
9
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
12 novembre 2009
- 12 nov. 2009 à 22:07
0
Merci
Bon Cracker j'ai finalment reussis à obtenir le .fla :)
Donc je suis quand même preneur de critique rapidos sur mon code ca m'aidera à ne pas refaire les erreurs; mais ne te prend pas la tête dessus.
Quand j'aurai le temps je réadapterai mon graphisme sur le player que ma transmis bbfunk c'est une bonne solution aussi.

Bonne swarée et merci à tous.
Commenter la réponse de Castelcerf
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Dernière intervention
31 janvier 2010
- 12 nov. 2009 à 22:25
0
Merci
ok je te fais une petite critique ce we alors. à plus :).
Commenter la réponse de crackter
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Dernière intervention
20 juin 2014
- 12 nov. 2009 à 22:32
0
Merci
Salut Crackter, j'ai renvoyé un message à la réponse que tu m'avais donné concernant mon poste "mon code attache movie fonctionne mal", j'ai un petit souci pour l'action "removemovieclip", est-ce que tu peux y jeter un oeil s.t.p. ? Je suis en train de chercher mais sans succès...

Merci beaucoup,

BBFUNK01
Commenter la réponse de BBFUNK01
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Dernière intervention
31 janvier 2010
- 13 nov. 2009 à 00:26
0
Merci
répondu sur le post en question :).
Commenter la réponse de crackter
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Dernière intervention
31 janvier 2010
- 14 nov. 2009 à 01:49
0
Merci
Je te met la critique qui n'est pas forcément complète, ce ne sont que des points sur lesquels tu pourra te pencher, il me faudrait d'avantage de temps pour faire une critique correcte. Mais si tu as besoin de points de détails particulier, surtout n'hésite pas.

// on déclare toujours les variables avec la forme
// var nomVariable:Type = new Type();
// sauf pour les variables inclus dans le lecteur qui sont déjà "créés"
// je sais que c'est pas obligatoire car flash est très "gentil"
// mais c'est une habitude à prendre afin de passer à l'as3 qui lui sera moins sympa.

var flag:Boolean = false;
var chanson:Number = 0;
var p:Number = 0;
var i:Number = 0;
var j:Number = 0;
var Fichier_XML:XML = new XML();
Fichier_XML.ignoreWhite = true;
// _root.liste
// ici inutile de mettre _root puisqu'on y est (à moins que tu intègres ce lecteur un autre
// swf, mais dans ce cas, on utilisera _parent à la place de _root.
//if (_parent.liste undefined) {_parent.liste "son";}
//s'il ne doit pas être intégré mais qu'il peut l'être (gérer les 2 donc)
//on fera plus
var liste:String = "son";
if (_parent.liste <> undefined) {liste = _parent.liste;}

// petite astuce utiliser ? et donc gagner une ligne
var liste:String = _parent.liste==undefined?"son":_parent.liste;
// je te laisse découvrir cette ligne ;)

Fichier_XML.load(liste+".xml");
var musica:Array = new Array();
var artiste:Array = new Array();
var titre:Array = new Array();
var logo:Array = new Array();
var sons:Array = new Array();
Fichier_XML.onLoad = function(Reussite:Boolean) {
if (Reussite) {
// tu peux créer un type objet afin d'éviter les lignes à rallonge et faire
// var node:Object = new Object();
// node = Fichier_XML.childNodes[0].childNodes[i];
// et donc
// node.childNodes[0].firstChild; pour musica par exemple
for (i=0; Fichier_XML.childNodes[0].childNodes[i]!=undefined; i++) {
 musica[i] =  Fichier_XML.childNodes[0].childNodes[i].childNodes[0].firstChild;
 artiste[i] =  Fichier_XML.childNodes[0].childNodes[i].childNodes[1].firstChild;
 titre[i] =  Fichier_XML.childNodes[0].childNodes[i].childNodes[2].firstChild;
 logo[i] =  Fichier_XML.childNodes[0].childNodes[i].childNodes[3].firstChild;
 sons[i] = new Sound(); // normalement un objet sound doit être attaché à un clip new Sound(unClip) si tu a une multitude de son à mixer (mais pas obligatoire dans un lecteur mp3)
 _root.conteneurtitre.attachMovie("titremusica","titremusica"+i,i+10);
 // alors pour les eval c'est à éviter ça a été remplacer par l'expression this
 // par exemple la commande suivante pourrait être remplacée par
 // _root["conteneurtitre.titremusica"+i].textmusica.text = titre[i];
 // ou
 // _root.conteneurtitre["titremusica"+i].textmusica.text = titre[i];
 // et donc pareil, on évite le _root donc on fera plus normalement :
 // _parent["....."+i].te.....; ou
 // this["...."+i].te....;
 // ceci afin que tu ne sois pas perdu quand tu passera à l'as3 car eval n'existera plus
 //
 // aussi puisque tu pointe plusieurs fois sur cette objet, tu peux créer un objet pour pointer dessus :
 // var target:MovieClip = _root.conteneurtitre["titremusica"+i];
 // et donc ensuite faire tes affectations plus facilement
 // target.textmusica.text = titre[i];
 // target.textartist.text = artiste[i];
 // etc....
 eval("_root.conteneurtitre.titremusica"+i).textmusica.text = titre[i];
 eval("_root.conteneurtitre.titremusica"+i).textartist.text = artiste[i];
 textmusica.autoSize = true;
 eval("_root.conteneurtitre.titremusica"+i)._x = 100; 
 eval("_root.conteneurtitre.titremusica"+i)._y = 18*i+18;
 eval("_root.conteneurtitre.titremusica"+i).num = i;
 eval("_root.conteneurtitre.titremusica"+i).attachMovie("bib","bib_load",1);
 eval("_root.conteneurtitre.titremusica"+i).bib_load._x = -100;
 eval("_root.conteneurtitre.titremusica"+i).bib_load._y = -8;
 eval("_root.conteneurtitre.titremusica"+i).bib_load.stop();
 eval("_root.conteneurtitre.titremusica"+i).bib_load._visible = false;
 		eval("_root.conteneurtitre.titremusica"+i).onPress = function() {
flag = true;
// même dans une boucle for on initialise la variable j
// for (var j:Number=0;j<sons.length;j++)
for (j=0;j<sons.length;j++) {
sons[j].stop();
}
if (_root.sons[this.num].duration==undefined) { //this.num car on est actuellement dans le onpress de titre.musica
_root.sons[this.num].loadSound (_root.musica[this.num],true); //true= oui streaming ; attachSound si le son etait dans la bibliotheque
} 
else {
if (_root.sons[this.num].position == _root.sons[this.num].duration) {
_root.p == 0;
}
if (_root.sons[this.num]==_root.sons[_root.chanson]){
_root.sons[this.num].start(_root.p/1000);
}
else{
_root.sons[this.num].start(0);
}
}
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=false;
 this.bib_load.play();
 this.bib_load._visible=true;
vol = _root.sons[_root.chanson].getVolume();
_root.sons[this.num].setVolume(vol);
_root.chanson = this.num;
chargeimage();
avancement();
}
 	}
  }
}

// je ne commente pas la suite du code je vais finir sur ce commentaire car ce sont principalement les
// mêmes "erreurs", qui n'en sont pas vraiment c'est juste pour t'aiguiller
// Par contre l'utilisation intensive des onEnterFrame n'est vraiment pas obligatoire,
// si elle est utile pour la position du slide de progression (même si on peut remplacer par
// un setInterval) par contre cela devient inutile pour la passage automatique des musiques.
// il faut faire attention car onEnterFrame est un énorme gouffre à ressources.
// pour le passage à la musique suivante quand une musique se termine, il y a plus simple, c'est
// l'évènement onSoundComplete.
// monSon.onSoundComplete = function() {
//  on lance une nouvelle musique
// }
// Je n'ai pas regardé précisemment ton code mais déjà je pense que les diverses pistes que je t'ai
// données te seront toujours utiles.
// n'hésite pas si besoin.


// il faut imaginer que ton _root.onEnterFrame se joue TOUT LE TEMPS vue que tu ne l'efface jamais
// tu efface bien un enterFrame plus bas avec delete this.onEnterFrame
// mais comme là tu mets _root.onEnterFrame, il ne correspondent pas forcément.
// regarde bien l'aide sur setInterval (que tu peux effacer avec un clearInterval) je pense que cela pourra
// te servir.
_root.onEnterFrame = function () {
chargeimage();
}
_root.player.debut.onPress = function () {
if(_root.flag==false){
var flag = true;
_root.sons[_root.chanson].loadSound (_root.musica[_root.chanson],true);
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=true;
 this.bib_load.play();
chargeimage();
avancement();
}
else{
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.play();
if(_root.sons[_root.chanson].position == _root.sons[_root.chanson].duration) {
p==0;
}
_root.sons[_root.chanson].start(_root.p/1000);
}
}

_root.player.enpause.onPress = function () {
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.stop();
for (j=0;j<sons.length;j++) {
sons[j].stop();
}
_root.p= _root.sons[_root.chanson].position;
}

_root.player.suivant.onPress = function () {
if(_root.flag==true){
    chansonsuivante();
}
}

_root.player.precedent.onPress = function () {
if(_root.chanson>0){
_root.sons[_root.chanson].stop();
vol = _root.sons[_root.chanson].getVolume();
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=false;
_root.chanson --;
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=true;
_root.sons[_root.chanson].setVolume(vol);
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.play();
if (_root.sons[_root.chanson].duration==undefined) {
_root.sons[_root.chanson].loadSound (_root.musica[_root.chanson],true);
}
chargeimage();
}
_root.sons[_root.chanson].start(0);
}

_root.progression.onPress = function () {
var temps = (_root._xmouse-this._x)/this._width;
_root.sons[_root.chanson].stop;
_root.sons[_root.chanson].start((_root.sons[_root.chanson].duration)*temps/1000);

}

chansonsuivante = function(){
if(_root.chanson<(i-1)){
_root.sons[_root.chanson].stop();
vol = _root.sons[_root.chanson].getVolume();
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=false;
_root.chanson ++;
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=true;
_root.sons[_root.chanson].setVolume(vol);
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.play();
if (_root.sons[_root.chanson].duration==undefined) {
_root.sons[_root.chanson].loadSound (_root.musica[_root.chanson],true);
}
chargeimage();
}
else{
_root.sons[_root.chanson].stop();
vol = _root.sons[_root.chanson].getVolume();
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=false;
_root.chanson = 0;
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load._visible=true;
_root.sons[_root.chanson].setVolume(vol);
eval("_root.conteneurtitre.titremusica"+[_root.chanson]).bib_load.play();
if (_root.sons[_root.chanson].duration==undefined) {
_root.sons[_root.chanson].loadSound (_root.musica[_root.chanson],true);
}
chargeimage();
}
 		_root.sons[_root.chanson].start(0);

 }
 
chargeimage = function(){
if (_root.logo[_root.chanson]!= null) 
{
_root.imageson.loadMovie(_root.logo[_root.chanson]);
var totalsuiv:Number;
var chargesuiv:Number;
var pourcensuiv:Number;
this.onEnterFrame = function():Void {
totalsuiv = _root.imageson.getBytesTotal();
chargesuiv = _root.imageson.getBytesLoaded();
pourcensuiv = Math.round(chargesuiv/totalsuiv*100);
if (isNaN(pourcensuiv) || pourcensuiv == undefined) {
pourcensuiv = 0;
}
else if (pourcensuiv == 100) {
_root.imageson._width = 95;
_root.imageson._height = 95;
delete this.onEnterFrame;
}
}

}
else {
_root.imageson.unloadMovie();
}
}

avancement = function(){
_root.progression.progressionbar.onEnterFrame = function(){
this._width = (_root.sons[_root.chanson].position/_root.sons[_root.chanson].duration)*215;
if (this._width == 215){
chansonsuivante();
}
}
}
Commenter la réponse de crackter

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.