2012-05-25 168 views
0

我有一個Flash Builder 4項目,它連接到Flash Professional CS5 FLA。 我不使用MXML,並且所有代碼都直接在Flash Builder中處理。 (Flash本身僅用於圖書館,它更易於我們的藝術家使用)Flash Builder 4 + Flash Professional + FlashVars!= WORKING

一切都一帆風順,一切都從動態生成的XML從SWF嵌入到的網站運行。但到目前爲止,我已經在actionscript中對XML路徑進行了硬編碼。我只希望不這樣做。

我已經遵循了關於將FlashVars轉換爲FB4/As3的最少45個教程,並且很簡單,似乎沒有任何工作。 老學校<嵌入>方法,使用<對象>方法,甚至使用swfObject方法,只是我似乎無法訪問這些flashvar屬性。

這裏就是我現在有現在的HTML:

<script> 
    var flashvars = { 
     xml: "/mapsystem/xml" 
    }; // yes that is definitely the correct path, its the same value as when it was hardcoded 
    $(function() { 
     swfobject.embedSWF("/flash/map.swf", "map", "960", "885", "10.0.0", "expressInstall.swf", flashvars); 
    }); 
</script> 
<div id="map"> 
    swfObject Aint Working 
</div> 

繼承人的動作(這是我的文檔類,第一件事)

package 
{ 
import flash.display.LoaderInfo; 
import flash.display.MovieClip; 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.text.TextField; 
import flash.text.TextFieldAutoSize; 

import src.GlobalStage; 
import src.Map; 
import src.Styles; 

public class map extends GlobalStage 
{ 
    public var xmlDoc = "map.xml"; 

    public function map() 
    { 
     var test:TextField = new TextField(); 
     test.x = 50; 
     test.y = 50; 
     test.autoSize = TextFieldAutoSize.LEFT; 
     test.text = "XML Doc: "; 
     this.addChild(test); 

     var test2:TextField = new TextField(); 
     test2.x = 50; 
     test2.y = 80; 
     test2.multiline = true; 
     test2.border = true; 
     test2.autoSize = TextFieldAutoSize.LEFT; 
     test2.text = "Parameters: \n"; 
     test2.appendText("Total Parameters: "); 

     this.addChild(test2); 

     var _params:Object; 

     if (this.loaderInfo.parameters.length != null) { 
      _params = this.loaderInfo.parameters; 
     } else { 
      // run alt code to init 
     } 

     for(var pItem:String in _params) { 

      test2.appendText("Name: " + pItem + " :: " + _params[pItem] + "\n"); 
     } 

        if(_params['xml'] != null) xmlDoc = _params['xml']; 


     test.appendText(xmlDoc); 

     var map:Map = new Map(xmlDoc); 

現在,當我在我的本地運行此測試,沒有什麼按預期顯示,但當涉及到網站本身,通過傳遞的flashvar,xmlDoc保持「map.xml」,我的櫃檯告訴我有0個參數,當然沒有任何顯示我的參數列表。

我花了8個小時試圖讓這個工作,坦率地說,我失去了頭髮,睡在這。

+0

GlobalStage是你的主要文檔類嗎?嘗試使用'root.loaderInfo.parameters'而不是'this'。 – weltraumpirat

回答

1

loaderInfo.parametersObject,因此,在此if語句中的條件是絕不可能是真實的(除非您的flashVars中有一個名爲PARAM「長」):

if (this.loaderInfo.parameters.length != null) { 

所以不是如果長度檢查不爲null,只檢查參數是否爲空:

if (loaderInfo.parameters) { 
0

loaderInfo.parameters是一個對象,它永遠不會爲空。你必須做的是檢查你的閃存的存在是這樣的:

if (loaderInfo.parameters.xml) 
{ 
    var xmlPath:String = loaderInfo.parameters.xml 
    // start using xml 
} 
else 
// run alt code to init 
}