2012-01-19 61 views
0

我是很新的動作腳本,請與我裸... 我有一個類設置和它看起來像這樣:獲取Flash變量從階級

package scripts 
{ 
    import flash.display.MovieClip; 
    import flash.display.Stage; 

    public dynamic class Upload 
    { 
     public function Upload() 
     { 

     } 

     public function getPostURL():String 
     { 
      return "test"; 
     } 
    } 
} 

而且我做實例化類:

var upload = new Upload(); 
var url:String = upload.getPostURL(); 

這工作正常,我能夠得到字符串,但我將如何修改該類能夠返回FlashVars?我一直在尋找幾個小時,一直沒有找到答案。

我設置使用這個Flash變數:

<param name=FlashVars value="var=test" /> 

感謝您的幫助。

回答

1

對於任何實例添加到舞臺上,你可以使用此代碼: root.loaderInfo.parameters.var

UPDATE

package scripts 
{ 
import flash.display.Shape; 
import flash.events.Event; 

    // If you want to use an Uplaod class like a container, 
    // then you should extend it from Sprite. 
    public dynamic class Upload extends Shape 
    { 
     protected var _url:String = ""; 

     public function Upload() 
     { 
      super(); 
      addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); 
     } 

     protected function addedToStageHandler(event:Event):void 
     { 
      _url = root.loaderInfo.parameters.var; 
     } 

     public function getPostURL():String 
     { 
      return _url; 
     } 
    } 
} 

Main.as

var upload = new Upload(); 
addChild(upload); 
var url:String = upload.getPostURL(); 

或者另一種變體沒有Upload類。在Main.as

var url:String = loaderInfo.parameters.var; 
+0

我做了類擴展階段,並返回getPostURL函數中的「root.loaderInfo.parameters.var」,但沒有任何返回。我得到的唯一錯誤是這裏有一個錯誤:var upload = new Upload(); var url:String = upload.getPostURL();' – Preston

+2

擴展階段並不意味着它已被添加到階段。 –

+0

查看我的回答更新。 –

1

一定要包括在src參數<embed>以及你使用了<param>標籤,例如,您的Flash變數:

<embed src="file.swf?var=test" /> 

這些變量是通過root.loaderInfo.parameters訪問。

您能夠詳細瞭解LoadInfo對象here