Получить переменную из php-скрипта в AS3-скрипт - PullRequest
0 голосов
/ 19 мая 2011
<?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 ]

5 голосов
/ 19 мая 2011
<?php
 echo 'someVar=' + htmlentities($someVar);
?>

Flash:

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();
}

Надеюсь, это поможет

2 голосов
/ 19 мая 2011

Вам нужно добавить слушателя в загрузчик.Когда данные будут загружены, он вызовет функцию.

Важно знать, что загрузка данных с сервера выполняется асинхронно.Это не происходит немедленно, и флэш-память не прекращает работу, пока она ожидает получения следующих данных.Таким образом, вы должны убедиться, что вы не вызываете какой-либо код, который требует данные, до загрузки данных.Этот код будет продолжать вызывать цикл внизу до загрузки данных.Если вы хотите использовать данные в цикле, вам нужно переместить этот код в функцию и вызвать эту функцию из функции 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++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...