2010-04-07 61 views
0

是否有可能在時間線上的任何地方公開php變量?Flash As3.0 PHP變量?

我包括的腳本工作正常,如果我只將它設置爲文檔類(它不會工作,如果我嘗試導入它)。變量將文本傳遞給主時間軸上的動態文本字段。

問題: 當SWF第一次加載時,它將提取信息並顯示它,但如果我移動到第二幀,然後移回第二幀,則會清除信息。它也不會將任何變量傳遞給第二幀。回到第一幀後查看變量的唯一方法是重新加載整個SWF。我幾乎堅持在這一點上試圖使變量在所有框架中保持不變。

這是我的代碼:

package { 
import flash.display.MovieClip; 
import flash.events.*; 
import flash.net.*; 
import flash.display.Stage; 

public class Main extends MovieClip 
{ 
    public function Main() { 

     var request:URLRequest = new URLRequest("http://localhost/mytest2/dataLayer.php"); 
     request.method = URLRequestMethod.GET; 

     var loader:URLLoader = new URLLoader(); 
     loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
     loader.addEventListener(Event.COMPLETE, completeHandler); 
     loader.load(request); 

     function completeHandler(evt:Event) { 

      var username = evt.target.data.username; 
      var pclass = evt.target.data.pclass; 
      var hpoints = evt.target.data.hpoints; 
      var spoints = evt.target.data.spoints; 

      username_txt.text = username; 
      class_txt.text = pclass; 
      hpoints_txt.text = hpoints; 
      spoints_txt.text = spoints; 

     } 
    } 
} 
} 
+0

請格式化你的代碼。只需選擇整個代碼並點擊0101010101010按鈕即可。 (不幸的是,我不能編輯它) – 2010-04-07 22:02:24

回答

0

你可以做的就是創建一個單獨的類與可變因素裏面,例如:

package 
    { 
     public static var username:String; 
     public static var pclass:String; 
     public static var hpoints:Number; 
     public static var spoints:Number; 
     public class my_globals 
     { 
      public function my_globals():void { 
      var request:URLRequest = new URLRequest("http://localhost/mytest2/dataLayer.php"); 
      request.method = URLRequestMethod.GET; 

      var loader:URLLoader = new URLLoader(); 
      loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
      loader.addEventListener(Event.COMPLETE, completeHandler); 
      loader.load(request); 

      } 

      private function completeHandler(evt:Event) { 
      username = evt.target.data.username; 
      pclass = evt.target.data.pclass; 
      hpoints = evt.target.data.hpoints; 
      spoints = evt.target.data.spoints; 
     } 

     } 
    } 

在你的根的第一幀創建這個類的一個新實例,每幀就可以通過靜態變量導入類和訪問,另一種解決方案是創建獲取和設置功能至O操作。

import my_globals; 

var globals:my_globals = new my_globals(); 

username_txt.text = my_globals.username; 
class_txt.text = my_globals.pclass; 
hpoints_txt.text = my_globals.hpoints; 
spoints_txt.text = my_globals.spoints; 

希望這有助於 乾杯, 威爾

+0

我仍然無法得到這該死的事情工作。公共變量必須在課堂內部。包裝打開後他們不能正確。當我把它變成一個包時,它似乎沒有完成這個功能。如果我在時間軸上運行它,或者將它放在我的文檔類中,它會很完美,但作爲一個獨立的軟件包,它不會做任何事情。 如果我可以保持獨立並在我的主文檔類中調用變量,那將非常好。 如果我使用username_txt.text =(my_globals.username);在我的主要文檔類中,它總是拉取一個空對象。它不會拉用戶名。 – Ravinos 2010-04-15 00:30:40

0

爲什麼不使用FlashVars標籤/屬性?

使PHP變量序列可用於Flash,它們組合成一個陣列,並使用http_build_query創建Flash變數PARAM:

$vars = array('var_one' => $var_one, 'var_two' => $var_two); 
$flashvars = http_build_query($vars); 

// ... 

echo "<PARAM NAME=FlashVars VALUE=\"$flashvars\">";