2010-11-11 46 views
0

我有存儲在我的HTML文件中的Flash變數:從子載入swf中訪問flash中定義的flashvar?回答下面提供

<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> 

我有我的FlashDevelop開發Flash應用程序。在這個Flash應用程序中,我加載了一個名爲728x90.swf的文件。我可以自由編輯我的728x90.fla文件,但我不想更改主Flash應用程序文件。

如何從我的728x90.swf文件中訪問flashvars變量?

編輯:

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); 

編輯2: 我貼我的整個javascript代碼到我原來的職位。我的flashvars被傳遞到名爲「REMap.swf」的REMap.swf我主SWF文件

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

然後在函數下面的代碼加載我728x90.swf文件

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

回答

0

您的文檔對象是MovieClip。與MovieClip相關聯的flashvars存儲在其loaderInfo.parameters屬性中。除非您需要與原始調用Flash影片關聯的flashvars,否則不要從stage.loaderInfo.parameters獲得flashvars。

編輯補充:

閱讀how to pass flashvars to a flash video。我感覺你試圖從Flash訪問JavaScript對象。這可得做,你只需要在flash.external.ExternalInterface

編輯#2讀了起來:

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

也許應該是:

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

檢查什麼的HTML被產生的致電swfobject.embedSWF。它可能不會正確發送flashvars。

+0

我並不想改變的flashvars得到父SWF的參數,我只需要閱讀它。 – Phil 2010-11-11 16:02:47

+0

下面的代碼描述了「你的變量未定義」 trace(「你的變量是」+ stage.loaderInfo.parameters.flashvars); (「你的變量是」+ loaderInfo.parameters.flashvars); trace(「你的變量是」+ loaderInfo.parameters.flashvars.map); (「你的變量是」+ stage.loaderInfo.parameters.flashvars.map); – Phil 2010-11-11 16:24:32

+0

我注意到你的「flashvars」位於一個JavaScript對象中。 Flashvars通過要加載的swf的url的查詢字符串傳遞。如果你只想讓你的腳本訪問javascript,那是完全不同的問題。 – zzzzBov 2010-11-11 16:53:47

0

簡單的回答:

創建一個變量並將其命名爲任何你想要的。我想有以下三種:

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); 

輸出:mapGAcentury21.xml空空

答: 爲了訪問父SWF Flash變量從子SWF使用下面的代碼:

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

菲爾是正確的:

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

將工作,它只會只有工作,如果孩子SWF已被添加到舞臺上。加載完成後,會發生一個/某個幀(s?)。 你可以聽在孩子的事件,像這樣:

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

你可以通過調用

parent.loaderInfo.parameters 
相關問題