IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 1 & ActionScript 2 Discussion :

loadvar et onload, là je vois pas pourquoi ça bug!


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut loadvar et onload, là je vois pas pourquoi ça bug!
    Bonjour tous,
    Je m'acharne depuis pas mal de temps pour modifier le player MP3 opensource Neolao.
    Pourtant ça me paraît ultra basique.
    Au lieu de lancer la fonction Play() toute simple, je veux que ça aille chercher l'URL du MP3 dans le fichier audio/player-lectures.php, lequel en profite pour incrémenter un compteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    	private function lecture(){
    			var vConfigLoad:LoadVars = new LoadVars();
    			vConfigLoad.load("audio/player-lectures.php");
    			vConfigLoad.onLoad = function(success:Boolean) {
         			      if (success) {
    				    this.setVolume(0);
    			      } else {
    				    this.setVolume(200);	
    			      }
    			}
    	}
     
    	public function play():Void
    	{
    		var mp3:String = "audio/files/son.mp3";
    		if (!this._firstPlay) {
    			lecture();
    			this._position = 0;
    			this._sound = new Sound();
    			this._sound.loadSound(mp3, true);
    			this._firstPlay = true;	
    		}	
    		this._sound.start(Math.round(this._position / 1000));
    		this.isPlaying = true;     
    	}
    Je lance play(), je donne la variable mp3 mais je veux la récupérer dans la fonction lecture par la suite.
    Actuellement, je change le volume pour voir si mon script fonctionne.
    Résultat : mon fichier "audio/player-lectures.php" est bien appelé car il incrémente bien le compteur de lecture. Mais jamais le gestionnaire onLoad n'est lancé, donc pas de changement de volume (c'est pourquoi je donne la valeur de "mp3" par la suite). Ni success, ni raté, onLoad ne veut pas se charger !

    Donc : pourquoi vConfigLoad.onLoad = function(success:Boolean) ne donne rien ???

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Bonjour,

    je sais pas si ça peut être ça mais j'aurai défini la fonction onLoad avant de lancer le load ..

    c'est surement le this qui ne correspond pas l'objet de ta classe dans le onLoad, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                var lecteur = this;
                vConfigLoad.onLoad = function(success:Boolean) {
                           if (success) {
                        lecteur.setVolume(0);
                      } else {
                        lecteur.setVolume(200);    
                      }
                }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut
    j'ai déjà essayé plein de trucs :
    1- loader directement dans la fonction play là où il y a lecture()
    2- définir le onLoad PUIS appeler le .load
    3- j'ai sortie les lignes de loading vers la nouvelle fonction lecture()
    4- j'ai tenté de charger un fichier texte tout bête au lieu du PHP
    5- j'ai passé ma fonction en public, private ou static ou rien et ça va toujours pas.
    6- utiliser onData au lieu de onLoad

    Il y a vraiment un problème comme si le player ne voit pas que c'est la fin du fichier donc il ne lance pas onload
    Ca fait pareil en local avec Apache 2.2 sous XP et sur serveur Apache 2.0 sous linux.

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    il faudrait utiliser les autres méthodes pour savoir d'où vient l'erreur.
    dans la doc il y a un exemple pour aider à débuguer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    var myLoadVars:LoadVars = new LoadVars();
     
    myLoadVars.onHTTPStatus = function(httpStatus:Number) {
        this.httpStatus = httpStatus;
        if(httpStatus < 100) {
            this.httpStatusType = "flashError";
        }
        else if(httpStatus < 200) {
            this.httpStatusType = "informational";
        }
        else if(httpStatus < 300) {
            this.httpStatusType = "successful";
        }
        else if(httpStatus < 400) {
            this.httpStatusType = "redirection";
        }
        else if(httpStatus < 500) {
            this.httpStatusType = "clientError";
        }
        else if(httpStatus < 600) {
            this.httpStatusType = "serverError";
        }
    }
     
    myLoadVars.onData = function(src:String) {
        trace(">> " + this.httpStatusType + ": " + this.httpStatus);
        if(src != undefined) {
            this.decode(src);
            this.loaded = true;
            this.onLoad(true);
        }
        else {
            this.onLoad(false);
        }
    }
     
    myLoadVars.onLoad = function(success:Boolean) {
    }
     
    myLoadVars.load(...);

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut
    J'ai bien essayé mais si je teste juste l'augmentation de volume en donnant la valeur à l'intérieur des différents appels (onHTTPStatus, onData, onLoad) ça ne met pas le volume indiqué, ce qui veut dire que jamais ces gestionnaires ne sont lancés.

    Je ne peux pas tester avec des trace parce que c'est des fichiers .as et que je ne peux pas faire "tester l'animation" mais en envoyant la variable httpStatusType dans un fichier texte, il me sort "undefined" dans tous les cas !

    Flash ne charge aucun gestionnaire après le load.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut ouf!
    Bon, en fait j'ai mis les même lignes dans la fonction "static" qui se charge de récupérer aussi les autres paramètres du player et là ça marche nickel !

    Cette fonction est lancé par mtasc d'après les commentaires du fichier original. mtasc est le compilateur fourni avec le code source par le développeur. je vois pas ce que ça vient faire dans la gestion des flux une fois le swf créé et chargé sur une page web mais bon...

    Je ne comprends absolument pas pourquoi je ne peux pas récupérer des données à l'extérieur de cette fonction là mais ça marche.
    Sauf que je ne peux pas lancer spécifiquement mon bout de fonction, ça se fait au chargement du swf et pas lors du clic sur "play".

    Vraiment, je ne comprends pas bien ces histoire de private, public, static et comment les variables peuvent être récupérées ou non les uns par les autres.
    Mais en tâtonnant pendant des heures, j'ai trouvé cette solution.

    Merci beaucoup beekeep pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. TrackPopupMenu échoue et je ne vois pas pourquoi.
    Par Morgatte dans le forum Dev-C++
    Réponses: 1
    Dernier message: 16/02/2012, 00h06
  2. update error code 1093 .. vois pas pourquoi
    Par maysa dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/10/2009, 11h55
  3. Argument de "Sheets" incorrect? Je ne vois pas pourquoi!
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2008, 07h19
  4. [SQL] Requete SQL mal formée : mais je vois pas pourquoi !
    Par Thomus38 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/06/2006, 18h03
  5. [UML] Je ne vois pas où mettre la vue !
    Par le Daoud dans le forum MVC
    Réponses: 12
    Dernier message: 19/03/2006, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo