AS3. Невозможно соединить SWF с PHP для обработки flashvar

1

здесь 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.

Теги:
actionscript-3
flash

1 ответ

1

Это потому, что сетевые запросы являются асинхронными. Возвращаемое значение из 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 для краткости.

  • 0
    Я пытался использовать этот код, но не получилось. videoSrc по-прежнему не меняет своего значения. Есть ли способ дождаться окончания загрузчика, чтобы присвоить новое значение videoSrc? videoSrc может быть изменен непосредственно внутри функции? При необходимости могу выложить весь код
  • 0
    Ну, вам нужно дождаться окончания загрузки. В этом весь смысл разделения двух функций, а не возврата значения videoSrc из функции modifySrc. С удовольствием предоставлю больше рекомендаций, если хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню