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 3 Discussion :

Problème chargement swf externe


Sujet :

ActionScript 3

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème chargement swf externe
    Bonjour à tous.
    Alors, je vais essayer de décrire clairement mon souci :

    Tout d'abord, mon swf 'mère' charge des swf externes, avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var chargeur:Loader = new Loader(); 
    chargeur.load(new URLRequest("/liveABBA.swf")); 
    chargeur.x = 100 ; 
    chargeur.y = 200 ; 
    stage.addChild(chargeur);
    OK, ça, ça marche.

    Maintenant, à l'intérieur de chaque swf externe, j'ai un préloader avec le code suivant (le même code est d'ailleurs utilisé sur la 1e frame de mon swf principal) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    stop(); 
    loaderInfo.addEventListener(Event.COMPLETE, onComplete); 
    loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); 
     
    function onComplete(evt:Event){ 
             gotoAndStop(2); 
    } 
     
    function onProgress(evt:ProgressEvent){ 
             barre.scaleX = evt.bytesLoaded  / evt.bytesTotal; 
    }
    ça aussi ça marche ! ok. Mais là où l'incompréhension commence, c'est maintenant :dans mon swf principal, j'ai une série de boutons qui me charge chacun un swf externe distinct. Le problème est le suivant : quand je clique sur le bouton qui va charger un autre swf dans le loader, j'ai alors le message d'erreur suivant :

    TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
    at xxxxx_fla::MainTimeline/onProgress()

    Sachant que le "xxxx_fla" est le swf qui avait été initialement chargé dans le loader... Je veux dire par là, que le premier swf externe se charge normalement, et dès que je clique sur un autre bouton pour en charger un autre, j'ai le message d'erreur ci-dessus...

    Si quelqu'un peut m'aider, ce serait très sympa. Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Salut !

    Je dois dire que c'est la première fois que je vois cette façon de faire pour charger une animation externe...
    Moi je place les écouteurs sur le Loader et non sur l'animation en train de charger.

    Voilà comment j'aurai procédé :
    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
     
    var chargeur:Loader = new Loader(); 
    var castLoader:MovieClip = new MovieClip();
     
    chargeur.x = 100 ; 
    chargeur.y = 200 ;
     
    chargeur.load(new URLRequest("liveABBA.swf")); 
     
    chargeur.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressionChargement);
    chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, chargementFini);
     
    function  progressionChargement (evt:ProgressEvent):void{
    barre.scaleX = evt.bytesLoaded  / evt.bytesTotal;
    }
     
    function chargementFini (evt:Event):void{
    castLoader = chargeur.content;
    this.addChild(castLoader);
    castLoader.nextFrame();
     
    }
    Ça reste à vérifier, je sais que pour pouvoir communiquer avec une animation externe chargée dans un Loader, il faut caster ce même loader en MovieClip.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut suite...
    Merci pour l'info. Je ne savais pas qu'il fallait placer les écouteurs sur le Loader et non sur l'animation en train de charger... Merci.

    J'ai donc fait la manip' que tu me conseilles, mais j'ai maintenant un message d'erreur au moment de l'exécution de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    castLoader = chargeur.content;
    =>
    "
    1118: Contrainte implicite d'une valeur du type statique flash.displayisplayObject vers un type peut-être sans rapport flash.display:MovieClip.
    "
    ...

    Et là, bah je suis perdu...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Oui, ça semble logique que les écouteurs soient placés sur le Loader. On écoute la progression du chargement du contenu du Loader et lorsqu'il est complètement chargé.

    Sinon, comme je te l'ai dit j'avais un doute au niveau du cast du Loader. J'ai regardé, et, effectivement, ce n'est pas la bonne syntaxe à utiliser. La fonction devrait fonctionner de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function chargementFini (evt:Event):void {
     
        // Cast du Loader en MovieClip
        castLoader = evt.target.content as MovieClip;
     
        // Ajout de castLoader à la displayList
        this.addChild(castLoader);
     
        // Repositionnement de la tête de lecture de castLoader
        castLoader.nextFrame();
    }
    Normalement, tu ne devrais plus avoir d'erreurs...

  5. #5
    Membre habitué
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Points : 174
    Points
    174
    Par défaut
    Tu peux aussi caster comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    castLoader = MovieClip(evt.target.content);
    Sinon, pour ta toute première question...
    En fait il ne faut jamais oublier qu'un chargement est une opération asynchrone. Ainsi, quand on lance le chargement, on ne peut pas forcément accéder à l'objet tout de suite. De même, quand un chargement est terminé, on ne peut pas toujours accéder aux données contenues tout de suite, mais il faut parfois attendre 2 ou 3 frames la décompression du swf pour "entrer dedans".
    Quand tu as une erreur sur un chargement à propos d'une référence à un objet null, c'est souvent que tu tentes d'accéder à un objet qui n'existe pas encore. Souvent, il suffit d'attendre 2 ou 3 frames pour que cela devienne possible.

  6. #6
    Membre habitué
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Points : 174
    Points
    174

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

Discussions similaires

  1. [JDOM] Problème chargement flux externe
    Par flo73 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/09/2011, 17h05
  2. [CS5] Preloader et chargement swf externe
    Par Arzor dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 15/11/2010, 11h50
  3. Problème chargement swf externes
    Par synthatetic dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 30/03/2009, 13h19
  4. Problème chargement image externe
    Par pouic06 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/04/2008, 09h20
  5. [FLASH 8] Probléme chargement .swf et variable
    Par segphault dans le forum Flash
    Réponses: 1
    Dernier message: 24/10/2005, 14h18

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