2011-05-19 91 views
0
<?php 
    $someVar = count(scandir("bilder/") - 2); 
?> 

我需要在我的.fla文件導入$someVar,我只需要它的價值:獲得從PHP腳本變量爲AS3腳本

var timer:Timer = new Timer(1000); 
timer.addEventListener(TimerEvent.TIMER, nextSlide2); 
timer.start(); 

var ld:Loader = new Loader(); 
var bildeArr = []; 

var backend: String = 'backend.php'; 
var loader: URLLoader = new URLLoader; 

loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
loader.load(new URLRequest(backend)); 

trace(loader.data); 



ld.x = 20; 
ld.y = 20; 
for(var i:int = 1; i<9; i++) { 
    bildeArr.push("bilde" + String(i)); 
} 

i = 0; 
function nextSlide2(evt:TimerEvent):void { 
    trace(i); 
    ld.load(new URLRequest("bilder/" + bildeArr[i] + ".png")); 
    addChild(ld); 
    if(i > 6) { 
     i = -1; 
    } 
    i++; 
} 

如何?

+0

您是否需要在腳本加載開始時加載它,或者在腳本啓動AS3後需要調用這些內容嗎? – slifty 2011-05-19 16:48:07

回答

2

您需要添加一個偵聽裝載機。它將在數據加載完成後調用一個函數。

重要的是要知道,從服務器加載數據是異步的。它不會立即發生,並且在等待下一個數據時閃存不會停止運行。因此,您需要確保在數據加載之前不要調用任何需要數據的代碼。 在加載數據之前,此代碼將繼續調用底部的循環。如果你想在你的循環中使用這些數據,你需要將這些代碼移動到一個函數中,並從onDataReady函數調用該函數。

var timer:Timer = new Timer(1000); 
timer.addEventListener(TimerEvent.TIMER, nextSlide2); 
timer.start(); 

var ld:Loader = new Loader(); 
var bildeArr = []; 

var backend: String = 'backend.php'; 
var loader: URLLoader = new URLLoader; 

loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
loader.addEventListener(Event.Complete, onDataReady) 
loader.load(new URLRequest(backend)); 

// Asynchronous call - will be called when the data is loaded. 
function onDataReady(e:Event):void { 
    trace(loader.data); 
    // Once loaded call another functon to use your data. 
} 



ld.x = 20; 
ld.y = 20; 
for(var i:int = 1; i<9; i++) { 
    bildeArr.push("bilde" + String(i)); 
} 

i = 0; 
function nextSlide2(evt:TimerEvent):void { 
    trace(i); 
    ld.load(new URLRequest("bilder/" + bildeArr[i] + ".png")); 
    addChild(ld); 
    if(i > 6) { 
     i = -1; 
    } 
    i++; 
} 
+0

我可以看到它的工作原理,但我仍然不確定如何獲取變量的值。 – masb 2011-05-19 22:26:43

+0

我很抱歉,但我只是沒有得到如何獲得變量的值。 – masb 2011-05-20 13:40:08

+0

您應該使程序運行並查看trace(loader.data)行的輸出。它可能是[對象對象],或者它可能是一個字符串。我不確定服務器返回的內容。 XML? JSON?名稱 - 值對?你期望什麼樣的回報價值?張貼在這裏,我會嘗試幫助更多。 – 2011-05-20 18:36:18

5
<?php 
echo 'someVar=' + htmlentities($someVar); 
?> 

閃光燈:

var loader:URLLoader = new URLLoader(); 
loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
loader.addEventListener(Event.COMPLETE, varsLoaded); 
loader.load(new URLRequest("url_to_php_file.php")); 
var varToAppend:String = ""; 
function varsLoaded (event:Event):void { 
    varToAppend = loader.data.someVar.toString(); 
} 

我希望這有助於

+0

AS – masb 2011-05-19 16:55:44

+0

不再支持LoadVars()對不起,我還沒有看到AS3,再次抱歉。 – 2011-05-19 17:16:18

+0

但是現在我已經更新了,你可以在上面看到它。 – 2011-05-19 17:16:48