从php-script获取变量到AS3脚本

时间:2011-05-19 16:36:48

标签: flash actionscript-3 actionscript

<?php
    $someVar = count(scandir("bilder/") - 2);
?>

我需要将$someVar导入我的.fla文件,我只需要它的值。:

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++;
}

如何?

2 个答案:

答案 0 :(得分: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();
}

我希望这会有所帮助

答案 1 :(得分: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++;
}