2011-05-18 4 views
0

Je construis un fichier FLA qui a une classe de document "Main" et dans son constructeur je lui ai dit de tracer (stage). J'ai ajouté un préchargeur externe pour charger ce fichier SWF mais que savez-vous, l'instruction trace montre NULL.Preloader externe provoque TypeError

Voici le préchargeur qui fonctionne actuellement.

import flash.display.Loader; 
import flash.events.ProgressEvent; 
import flash.events.Event; 
import flash.net.URLRequest; 

var l:Loader = new Loader(); 
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); 
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
l.load(new URLRequest("Main.swf")); 

function onProgress(e:ProgressEvent):void { 
    preloader.mask.height = (e.bytesLoaded/e.bytesTotal) * preloader.lemon.height; 
} 

function onComplete(e:Event):void { 
    removeChildAt(0); 
} 

Pour le main.swf lui-même est ici la classe de document:

package { 

    import Position; 
    import flash.display.*; 
    import flash.events.Event; 

    public class Main extends MovieClip { 

     public function Main():void { 
      trace(stage); 
     } 
    } 
} 

//// SOLVED /// J'ai oublié d'ajouter l'article à la scène, mais heureusement, dans le code de i phillip vu ça. Alors rappelez-vous juste une fois que le Event.COMPLETE se déclenche, ajoutez le contenu du chargeur à la scène sinon la classe de document pour le swf affichera null.

Répondre

3

vous devez attendre que votre classe principale soit ajoutée à la scène (Event.ADDED_TO_STAGE). Le préchargeur est maintenant le propriétaire de la scène ...

Si vous chargez un fichier SWF externe à l'aide d'un chargeur, vous devez d'abord attendre le fichier Event.INIT, qui est déclenché par le chargeur une fois le chargement terminé et le constructeur de votre fichier. swf chargé est exécuté. Si vous ajoutez le contenu des chargeurs à la liste d'affichage, l'événement ADDED_TO_STAGE est également déclenché. Avant qu'un objet d'affichage ne soit ajouté à la scène, la propriété stage est nulle.

ldr //your loader 

ldr.loaderInfo.addEventListener (Event.INIT, foo); ldr.load();

Fonction foo (e: Evénement): void { var content: * e.target.content; addChild (contenu); }

+0

J'ai simplement ajouté cette ligne au constructeur "addEventListener (Event.ADDED_TO_STAGE, go);" de sorte qu'il appellerait cette fonction "aller" alors j'ai fait la déclaration de trace dans "aller" et toujours rien, pourquoi ?? – 1337holiday

+0

est-il possible pour vous d'éditer dans le code nécessaire pour tracer la scène? J'ai essayé pendant des heures .... – 1337holiday

+0

Hmmm je vois, alors comment exactement ajouter le contenu du chargeur à la liste d'affichage? Im un tel noob à ce .... – 1337holiday

Questions connexes