2011-03-01 3 views
0

J'ai des difficultés avec un certain problème: J'ai une application flash principale qui charge un contenu différent - jeux, applications et etc. Dans certains jeux quand il est chargé il y a un changement dans son comportement des pièces (movieclips). Par exemple, sans l'application loader vous tirez et tuez une personne dans un jeu de contenu mais dans le chargeur lorsque vous jouez avec le même jeu que vous tirez et bien que la balle ait touché la personne, il ne se passe rien. J'espère que je l'explique ok)). Une idée pourquoi cela se produit-il? merci j'avanceproblème de chargeur flash

mise à jour:

Salut Köhrer Malte, Merci pour vos réponses beaucoup! Cela me rend fou - la réponse est quelque part par ici mais est manquée). Voici le code - sur Event.COMPLETE Je change la position du contenu chargé. J'ai une autre fonction qui fonctionne pendant le COMPLETE et il ajoute les parties que leur placement est changé. L'important qu'ils sont modifiés sur COMPLÈTE pas avant. merci pour votre aide aimable.

var loader:Loader = new Loader(); 
addChild(loader); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingFunc); 
loader.load(new URLRequest(urlAdr)); 


function loadingFunc(event:Event):void 
{ 

    var loaderInf:LoaderInfo = event.target as LoaderInfo; 
    dispObj = loaderInf.loader; 

    //dispObj.x = stage.stageWidth/2-loaderInf.width/2; --------------- That how it was   before I changed root property 
    //dispObj.y = stage.stageHeight/2-loaderInf.height/2; 

    var mb:MovieClip = dispObj.loaderInfo.content as MovieClip; //----------- That how it's now 
    mb.x = stage.stageWidth/2-loaderInf.width/2; 
    mb.y = stage.stageHeight/2-loaderInf.height/2; 

    //var app:App = new App(mb); This give the same resault as var mb:MovieClip = dispObj.loaderInfo.content as MovieClip; 
} 
+0

Se pourrait-il que les fichiers SWF que vous chargez utilisent réellement la propriété root pour accéder à ses MovieClips/boutons? Si c'est le cas, vous pouvez vérifier où votre chargeur place le fichier SWF chargé. –

+0

merci de répondre! Pourriez-vous s'il vous plaît expliquer plus ce que vous vouliez dire? J'ajoute le composant Loader avec la méthode addChild et le Loader charge lui-même le contenu. Peut-être que vous pouvez ajouter une ligne de code par exemple? Merci beaucoup! – ilya

+0

Pas beaucoup d'espace pour les commentaires, donc je vais essayer de le garder court et simple: Si vous avez une page HTML qui charge un fichier SWF, il le charge dans "root". D'autre part, vous utilisez un loader-SWF spécial qui est chargé dans "root" puis crée un loader et l'ajoute à un MovieClip, par exemple à "root.myLoadedSwf". Si le SWF que vous chargez avec votre Loader essaie d'accéder à ses MovieClips/boutons via root.some_movieclip_name, il échouera car le SWF que vous venez de charger a été ajouté au MovieClip "root.myLoadedSwf" - et non "root". –

Répondre

0

Une façon d'éviter d'utiliser la racine serait initalizing votre application comme ceci à partir de la ligne de temps:

var app:App=new App(this); 

Dans ce cas, vous passez l'App une référence au MovieClip qui contient le script, pas Peu importe que ce soit en racine ou ailleurs. Voici un exemple de la façon dont la classe pourrait ressembler à:

class App{ 
    public var appRoot:MovieClip=null; 
    function App(appRoot:MovieClip){ 
     this.appRoot=appRoot: 
    } 
    function setHeadline(text:String):void{ 
     appRoot.textField.text=text; 
    } 
} 

Maintenant, vous avez la référence à la movieclip enregistrée et peut l'utiliser pour l'accès (par exemple: fonction setHeadline()) tout sans se soucier de la racine ne contenant pas ce que vous Attendez-y.

+0

Merci pour votre explication et votre exemple! Mais d'une manière ou d'une autre cela n'a pas fonctionné pour moi ou je ne l'ai pas pris la bonne manière. cette ligne: var app: App = new App (this); J'implémente dans mon application principale qui est le type de chargeur. Est-ce correct? L'application de classe que j'importe dans l'application principale. Est ce que tu voulais dire ou je me trompe? Merci! – ilya

+0

Cet exemple montre simplement comment vous pouvez éviter d'utiliser root dans les films que vous chargez. Lisez ceci pour quelques informations sur le fonctionnement de root: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObject.html # root –

+0

vérifier la mise à jour que j'ai inclus – ilya