здесь 5:44 утра, всю ночь, пытаясь сделать эту работу.
Я пытаюсь отправить URL-адрес из файла swf в php файл, обработать этот URL-адрес с помощью php-кода и вернуть его в swf.
Мне удалось отправить и обработать данные. Проблема возникает, когда я пытаюсь использовать данные кода ActionScript.
//videoSrc is a string containing the URL I want to process.
videoSrc=modifySrc(videoSrc);
function modifySrc(vSrc:String):String{
// Assign a variable name for our URLVariables object
var variables:URLVariables = new URLVariables();
// Build the varSend variable
// Be sure you place the proper location reference to your PHP config file here
var varSend:URLRequest = new URLRequest("http://foo.net/config_flash.php");
varSend.method = URLRequestMethod.POST;
varSend.data = variables;
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
varLoader.addEventListener(Event.COMPLETE, completeHandler);
variables.uname = vSrc;
variables.sendRequest = "parse";
// Send the data to the php file
varLoader.load(varSend);
// the php function ends with ' print "var1=$UrlProcessed"
function completeHandler(event:Event):void{
vSrc = event.target.data.var1;
}
return vSrc;
}
Проблема в том, что vSrc никогда не изменяется. Я думаю, что проблема связана с этой строкой: varLoader.addEventListener(Event.COMPLETE, completeHandler);
Я не могу сделать fullHandler модифицировать значение vSrc.
Это потому, что сетевые запросы являются асинхронными. Возвращаемое значение из modifySrc
остается неизменным во время выполнения функции. Он изменяется только тогда, когда экземпляр URLLoader
запускает событие Event.COMPLETE
. Попробуйте это вместо этого:
modifySrc(videoSrc);
function modifySrc(src:String):void
{
...
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, modify_completeHandler);
...
}
function modify_completeHandler(event:Event):void
{
var loader:URLLoader = event.target as URLLoader;
loader.removeEventListener(Event.COMPLETE, modify_completeHandler);
videoSrc = loader.data.var1;
}
Я сократил оставшуюся часть кода инициализации от modifySrc для краткости.