2012-11-29 39 views
0

我正在研究Android應用程序的原型Air,該應用程序加載了一些遠程swf文件(全部由我創建和控制),我需要能夠將變量傳遞給遠程SWF 。需要將變量傳遞給遠程swf

這裏是一個快速向下突破的過程目前是如何工作的:

  • 的Android應用程序,叫做裝載機,安裝在設備上。
  • 加載程序指向我的服務器並找到它加載到主要階段的Player.swf。 Player.swf顯示登錄屏幕。
  • 當用戶正確登錄時,Player.swf會從API接收XML響應,並顯示遠程SWF視頻列表以供用戶顯示。 Player.swf循環遍歷XML列表並逐個播放每個遠程SWF。

到目前爲止,這麼好。遠程SWF視頻加載並完美播放。但我需要從Player.swf(從XML響應中拉出)中獲取變量以用於遠程SWF(例如文本字符串,用戶ID等)

從我所做的所有搜索中,我相信它由於Loader是一個編譯好的應用程序,而Player.swf +遠程SWF都是從服務器上卸載的,但是,現在我想知道,因爲Player.swf是具有處理XML響應的AS3代碼,並且與播放的遠程SWF位於同一臺服務器上(因此應該是同一個沙箱? )

我能夠使用URL參數傳遞一個變量,但它只能在本地使用,而不是在使用Android應用程序時使用。

我發現了一個關於Sandbox Bridges的博客文章,但示例文件下載不再有效。

任何人都可以點我在正確的方向在使用使用parentSandboxBridge函數/類沿變量傳遞(我見過處理傳遞功能和/或進行編碼Flex的所有例子)

我不能發表任何代碼,因爲我根本沒有什麼可以顯示我想要達到的目標(我完全沉迷於這一點!)

編輯:我設法得到參數傳遞(即使它在本地工作之前,它沒有使用Loader應用程序>遠程播放器>遠程SWF動畫組合)

我必須設置應用程序域的上下文Player.swf內(看到它是在遠程SWF動畫相同的服務器上,不知道爲什麼我需要這樣做)

但奇怪的是,我不能使用父或根來拾取變量?

+0

你能告訴你如何努力?如果要將另一個SWF加載到主SWF中,而不是URLRequest的數據對象,那麼可以使用URLVariables填充並傳遞給Loader的加載方法。 –

回答

0

我上的HTC Desire測試這個運行的是Android 2.2.2,它的工作原理是什麼,我已經把在評論因此答案如下:)

主機需要定義類似:

 var params:URLVariables = new URLVariables(); 
      params["string"] = "ala ma kota"; 
      params["number"] = 1979; 

     var request:URLRequest = new URLRequest(); 
      request.data = params; 
      request.url = "urlVarsReader.swf"; 

     var loader:Loader = new Loader(); 

     loader.load(request); 

     addChild(loader); 

然後加載內容(這裏是urlVarsReader。SWF)可以按如下閱讀:

 var output:TextField = new TextField(); 
     addChild(output); 
     output.border = true; 
     output.width = 320; 
     output.height = 240; 
     output.wordWrap = true; 
     output.multiline = true; 
     var p:Object = getParams(this.loaderInfo); 
     for (var name:String in p) 
     { 
      output.appendText(name + " = " + p[name] + "\n"); 
     } 

我有一種包裝方法讀取PARAMS:

public function getParams(li:LoaderInfo):Object 
    { 
     try 
     { 
      var params:Object = li.parameters; 
      var pairs:Object = {}; 
      var key:String; 
      for(key in params) 
      { 
       pairs[key] = String(params[key]); 
      } 
     } 
     catch(e:Error) 
     { 
      return {error:e.getStackTrace()}; 
     } 
     return pairs; 
    } 

問候

編輯:

這僅適用於本地內容失敗與SecurytyError例如引發SecurityError:錯誤#2070:安全沙箱衝突:調用者http://example.com/urlVarsReader.swf?string=ala%20ma%20kota&number=1979無法訪問階段所擁有的應用程序:/loadwithparams.swf

+0

感謝您的意見。您是否嘗試使用遠程服務器上託管的urlsVarRead.swf? –

+0

現在我想:) –

+0

還記得,我的android應用程序正在加載一個遠程swf,加載更多的遠程swfs到它。 App> swf(這個提供變量)> swf(這個需要撿起來) –