2010-11-11 29 views
0

J'ai un var flash stocké dans mon fichier html:Accès flashvar défini en HTML à partir swf chargé enfant? RÉPONSE CI-DESSOUS

<script type="text/javascript"> 

    var flashvars = { 

     map:"mapGAcentury21.xml" 

    }; 

    var params = { 

     menu: "false", 

     scale: "noScale", 

     allowFullscreen: "true", 

     allowScriptAccess: "always", 

     bgcolor: "#FFFFFF" 

    }; 

    var attributes = { 

     id:"REMap" 

    }; 

    swfobject.embedSWF("REMap.swf", "altContent", "840", "630", "9.0.0", "expressInstall.swf", flashvars, params, attributes); 

</script> 

J'ai une application flash j'ai développé dans FlashDevelop. Depuis cette application Flash, je charge un fichier appelé 728x90.swf. Je peux librement éditer mon dossier 728x90.fla mais je ne veux pas changer mes fichiers d'application flash principaux.

Comment puis-je accéder à la variable flashvars à partir de mon fichier 728x90.swf?

EDIT:

The following codes traced "your variable is undefined" 
1. trace("your variable is " + stage.loaderInfo.parameters.flashvars); 
2. trace("your variable is " + loaderInfo.parameters.flashvars); 
3. trace("your variable is " + loaderInfo.parameters.flashvars.map); 
4. trace("your variable is " + stage.loaderInfo.parameters.flashvars.map); 

EDIT 2: Je collé tout mon code javascript dans mon message original. mes flashvars sont passés dans mon fichier swf appelé « REMap.swf » Le REMap.swf

public var requestAd:URLRequest = new URLRequest("media/728x90.swf"); 

Puis, en fonction du code ci-dessous charge mon fichier 728x90.swf

loaderAd.load(requestAd); 
addChild(loaderAd); 
loaderAd.contentLoaderInfo.addEventListener(Event.COMPLETE, promoLoaded); 

Répondre

0

Votre objet document est un MovieClip. Les flashvars associés à MovieClip sont stockés dans sa propriété loaderInfo.parameters. N'obtenez pas les flashvars de stage.loaderInfo.parameters sauf si vous voulez les flashvars associés à l'animation flash d'origine.

Modifier pour ajouter:

En savoir plus sur how to pass flashvars to a flash video. J'ai l'impression que vous essayez d'accéder à un objet JavaScript depuis Flash. Cela peut se faire aussi, vous aurez juste besoin de lire sur flash.external.ExternalInterface

Edit # 2:

public var requestAd:URLRequest = new URLRequest("media/728x90.swf"); 

devrait probablement:

public var requestAd:URLRequest = new URLRequest("media/728x90.swf?map=mapGAcentury12.xml"); 

Vérifiez ce que HTML est généré par le swfobject.embedSWF appel. Il se peut que les flashvars ne soient pas envoyés correctement.

+0

Je ne cherche pas à changer les flashvars, j'ai juste besoin pour le lire. – Phil

+0

Les codes suivants tracés "votre variable n'est pas définie" trace ("votre variable est" + stage.loaderInfo.parameters.flashvars); trace ("votre variable est" + loaderInfo.parameters.flashvars); trace ("votre variable est" + loaderInfo.parameters.flashvars.map); trace ("votre variable est" + stage.loaderInfo.parameters.flashvars.map); – Phil

+0

J'ai remarqué que vos "flashvars" se trouvent dans un objet javascript. Les flashvars sont passés via la chaîne de requête de l'URL du swf à charger. Si vous voulez juste que votre script accède à javascript, c'est une question entièrement différente. – zzzzBov

0

Réponse simple:

Créer une variable et nommez-ce que vous voulez. J'ai essayé les trois suivants:

var s1:String = stage.loaderInfo.parameters["map"]; 
var s2:String = this.root.loaderInfo.parameters["map"]; 
var s3:String = root.loaderInfo.parameters.map; 

trace(s1 + " " + s2 + " " + s3); 

La sortie: mapGAcentury21.xml null null

Réponse: Pour accéder flashvars d'un swf parent d'un enfant swf utiliser le code suivant:

var s1:String = stage.loaderInfo.parameters["PLACE THE NAME OF YOUR FLASHVAR WITHIN QUOTATIONS"]; 
trace(s1); 
0

Phil est exact que:

var s1:String = stage.loaderInfo.parameters["map"]; 

fonctionnera, mais il seulement travailler si le fichier SWF enfant a déjà été ajouté à la scène. Cela arrive un/une image (s?) Après le chargement est terminé. Vous pouvez écouter le cas chez l'enfant comme ceci:

public function instantiateChildClass(){ 
    trace(stage.loaderInfo.parameters["map"]); //throws error if this SWF has just been loaded into a parent SWF 
    addEventListener(Event.ADDED_TO_STAGE, init); 
} 
private function init(e:Event):void{ 
    removeEventListener(Event.ADDED_TO_STAGE, init); 
    trace(stage.loaderInfo.parameters["map"]); //traces map param 
} 
2

Vous pouvez obtenir les paramètres du fichier SWF parent en appelant

parent.loaderInfo.parameters