Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   URLLoader некорректно работает на IE (http://www.flasher.ru/forum/showthread.php?t=98282)

MaxCmd 10.07.2007 19:34

URLLoader некорректно работает на IE
 
Здраствуйте!

После некоторых трудностей, сделал слайдшоу рисунки, который загружает картинки из сервера.

При воспроизведения слайдшоу флеш файл можут загрузить/отправить данные. Получить параметры картинки, отправить запрос про клика, и тд.
Все прекрасно работает на Firefox, Opera. Но на IE появляется проблемы, после первых-третых загрузок флеш вообще не загружает данные. Отправлять может.

На каждом секунду 2 раза загружаю данные через класс URLLoader(вырезка из кода):
Код:

var msgLoader:URLLoader;
var timer:Timer;

function setTimer() {
timer = new Timer(500);
timer.addEventListener("timer", loadMessages);
timer.start();
msgLoader = new URLLoader();
msgLoader.addEventListener(Event.COMPLETE, getMessages);
}

function loadMessages(event:TimerEvent):void {
request = new URLRequest("http://localhost/index.php");
msgLoader.load(request);
}
...

Жду ваших ответов.
Заранее благодарю.

etc 10.07.2007 22:35

А кто сказал, что за 500 мс данные успеют загрузиться? Там вообще полный хаос начнется…

miramax 11.07.2007 07:08

Надо таймер запускать в обработчике complete. Что бы только ПОСЛЕ предыдущей загрузки началась следующая.

MaxCmd 11.07.2007 12:39

__etc, пока на локальном серваке работает.
miramax, спасибо. Попробую.

MaxCmd 11.07.2007 14:50

Пробовал способ [b]miramax[b].
Но все равно не работает. Потом для теста так сделал.
Написал маленький скрипт, который при каждой обращении добавляет строка параметров к файл. Теперь можно узнать сколько обращения будет к скрипту.
Во флеше:
Потом обработчике COMPLETE(объект msgLoader:URLLoader) добавляю символ на TextField.

На флеше все работает. Он отправляет запрос на сервер и получает ничего. А РНР код только 3 строка добавляет к файлу. Как-то запросы флеш ролика на пути пропадает.

miramax 11.07.2007 15:45

Может проблема в кэшировании браузера?

MaxCmd 11.07.2007 16:23

Проблема не в кешировании. Проверил.

MaxCmd 11.07.2007 19:29

Еще один тест.

Просто создал ролик с таким кодом:
Код:

package {
       
        import flash.events.*;
        import flash.net.*;
        import flash.utils.*;
        import flash.display.MovieClip;
        import flash.text.*;
       
        public class URLLoaderTest extends MovieClip {
               
                var loader:URLLoader;
                var request:URLRequest;
                var timer:Timer;
                var variables:URLVariables;
                var text:TextField;
               
                public function URLLoaderTest() {
                        text = new TextField();
                        text.autoSize = TextFieldAutoSize.LEFT;
                        text.border = true;
                        addChild(text);
                       
                        text.appendText("start\n");
                        variables = new URLVariables();
                       
                        timer = new Timer(500);
                        timer.addEventListener("timer", loadSendMsg);
                       
                        timer.start();
                       
                        loader = new URLLoader();
                        loader.addEventListener(Event.COMPLETE, loadComplete);
                }
               
                function loadComplete(event:Event):void {
                        text.appendText("Msg loaded - " + String(loader.data) + "\n");
                        timer.start();
                }
               
                function loadSendMsg(event:TimerEvent):void {
                        timer.stop();
                        request = new URLRequest("http://localhost/SP/test/get.php");
                        loader.load(request);
                }
               
        }
       
}

РНР код(при обрашении просто добавит строка с текстом "getted"):
Код:

<?php
        $f = fopen("get.txt", "a");
        fwrite($f, "getted\n");
        fclose($f);
?>

Только первый вызов loader.load(request) обращает на сервер. В файле число строк - 1.

Если запустить этот ролик на Firefox и Opera проблем не будет.
IE шестая. На седмом не пробовал.
Странно.

miramax 11.07.2007 20:33

Цитата:

Сообщение от miramax
Может проблема в кэшировании браузера?


Для избежания кэширования нужно или отправлять POST запросы или каждый раз изменять GET запрос. Функция noCache гарантирует уникальность строки запроса.
Код:

function loadSendMsg(event:TimerEvent):void {
        timer.stop();
        request = new URLRequest("http://localhost/SP/test/get.php?antiCache="+noCache());
        loader.load(request);
}

function noCache():String{
    var d:Date = new Date();
    return d.getHours()+'_'+d.getMinutes()+"_"+d.getSeconds()+"_"+Math.random();
}


MaxCmd 11.07.2007 20:50

Ура! Заработала!

Спасибо вам [b]miramax[b]! Огромное!!!

Я вообще не думал об этом.

Благодарю вам от узбекских флешеров!


Часовой пояс GMT +4, время: 01:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.