Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.06.2009, 12:42
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 1  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
По умолчанию Проблемы с URLLoader (двойные переменные)

Доброго времени суток.
Написал собственный класс для отправки и получения данных с сервера/на сервер

вот класс

Код AS3:
package main{
	import flash.display.Sprite;
	import flash.events.*;
	import flash.system.*;
	import flash.net.*;
 
	public class LoadData extends Sprite {
		private var Loader:URLLoader;
		private var Request:URLRequest;
		public var varTo:URLVariables;
		public var vars:URLVariables;
 
		public function LoadData():void {
		}
		public function setLoadData():void {
			varTo = new URLVariables();
		}
		public function go(url:String):void {
			System.useCodePage = true;
 
			Request = new URLRequest(url);
			Request.data = varTo;
			Request.method = URLRequestMethod.POST;
 
			Loader = new URLLoader();
			Loader.dataFormat = URLLoaderDataFormat.VARIABLES;
			Loader.load(Request);
			Loader.addEventListener(Event.COMPLETE, completeHandler);
			Loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
			Loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
		}
		private function completeHandler(event:Event):void {
			vars = new URLVariables(Loader.data);
			clearEvents();
			dispatchEvent(new Event('loadComplete'));
		}
		private function securityErrorHandler(event:SecurityErrorEvent):void {
			clearEvents();
		}
		private function ioErrorHandler(event:IOErrorEvent):void {
			clearEvents();
		}
		private function clearEvents():void {
			Loader.removeEventListener(Event.COMPLETE, completeHandler);
			Loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
			Loader.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
		}
	}
}
вот как я его применяю на практике

Код AS3:
package main{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;
	import flash.net.*;
 
	public class refrashBattle extends Sprite {
		private var connect:LoadData = new LoadData();
 
		public function refrashBattle():void {
			doTime();
		}
		private function doTime():void {
			connect.setLoadData();
			connect.varTo.myName = 'Вася';
			connect.varTo.myText = 'текст текст текст';
			connect.go('http://localhost/1.php');
			connect.addEventListener('loadComplete', contentBattle, false, 0, true);
 
			intervalReftash = setTimeout(doTime, 5000);
			trace('refrash');
		}
		private function contentBattle(event:Event):void {
			connect.removeEventListener('loadComplete', contentBattle);
			trace(connect.vars.toString())
		}
	}
}
Чтобы небыло лищних вопросов вот php файл, но проблема точно не в нем, так как в броузере все выводиться стабильно.

PHP код:
<?php
header
('Content-Type: text/html; charset=utf-8');

echo 
'newMyName='.$_POST['myName'];
echo 
'&newMyText ='.$_POST['myText'];
?>
Задача очень простая нужно каждые пять секунд обращаться к серверу и получать данные. В данном случае я отправляю две переменные myName и myText на локальный сервер и ответ от сервера вывожу через trace.

По началу все нормально, но потом скажем раз в 10-15 запусков (Ctrl+Enter), первый раз передаются двойные переменные вида
"newMyName=Вася&newMyName=Вася&newMyText=текст текст текст&newMyText=текст текст текст", а через 5 секунд когда идет повторная загрузка переменные передаються нормально, то есть только в первый раз (то есть при первом запуске флешьки) такая проблема и, то не чаще чем раз в 10-15 запусков.

Добавлено через 4 минуты
Разжую еще больше
Первый запуск
&newMyName=Вася&newMyText=текст текст текст
через 5 секунд
&newMyName=Вася&newMyText=текст текст текст
через 5 секунд
&newMyName=Вася&newMyText=текст текст текст
через 5 секунд
&newMyName=Вася&newMyText=текст текст текст

и т.д., но иногда раз в 10-15 запусков идет так

Первый запуск
newMyName=Вася&newMyName=Вася&newMyText=текст текст текст&newMyText=текст текст текст
через 5 секунд
&newMyName=Вася&newMyText=текст текст текст
через 5 секунд
&newMyName=Вася&newMyText=текст текст текст
через 5 секунд
&newMyName=Вася&newMyText=текст текст текст

Старый 19.06.2009, 13:14
alekslitvinenk вне форума Посмотреть профиль Отправить личное сообщение для alekslitvinenk Посетить домашнюю страницу alekslitvinenk Найти все сообщения от alekslitvinenk
  № 2  
Ответить с цитированием
alekslitvinenk
 
Аватар для alekslitvinenk

Регистрация: Oct 2005
Адрес: Москва
Сообщений: 491
Отправить сообщение для alekslitvinenk с помощью ICQ Отправить сообщение для alekslitvinenk с помощью AIM Отправить сообщение для alekslitvinenk с помощью Skype™
попробуйте сделать так чтобы имя экземпляра класса URLLoader у вас не совпадало с названием нативного класса Loader

Старый 19.06.2009, 13:40
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 3  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
Цитата:
Сообщение от alekslitvinenk Посмотреть сообщение
попробуйте сделать так чтобы имя экземпляра класса URLLoader у вас не совпадало с названием нативного класса Loader
В классе LoadData заменил везде Loader на myLoader, но результат тот же =(

Старый 19.06.2009, 13:49
alekslitvinenk вне форума Посмотреть профиль Отправить личное сообщение для alekslitvinenk Посетить домашнюю страницу alekslitvinenk Найти все сообщения от alekslitvinenk
  № 4  
Ответить с цитированием
alekslitvinenk
 
Аватар для alekslitvinenk

Регистрация: Oct 2005
Адрес: Москва
Сообщений: 491
Отправить сообщение для alekslitvinenk с помощью ICQ Отправить сообщение для alekslitvinenk с помощью AIM Отправить сообщение для alekslitvinenk с помощью Skype™
у меня все работает ок

Старый 19.06.2009, 13:54
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 5  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
может стоит перейти на XML как думаете?

Старый 19.06.2009, 21:10
alekslitvinenk вне форума Посмотреть профиль Отправить личное сообщение для alekslitvinenk Посетить домашнюю страницу alekslitvinenk Найти все сообщения от alekslitvinenk
  № 6  
Ответить с цитированием
alekslitvinenk
 
Аватар для alekslitvinenk

Регистрация: Oct 2005
Адрес: Москва
Сообщений: 491
Отправить сообщение для alekslitvinenk с помощью ICQ Отправить сообщение для alekslitvinenk с помощью AIM Отправить сообщение для alekslitvinenk с помощью Skype™
Цитата:
может стоит перейти на XML как думаете?
Да, наверное..Это самый оптимальный вариант для отправки структурированного ответа клиенту.
Но в любом случае это не спасет от ошибок в коде.
Кстати, так и не смог воспроизвести тот баг.

Старый 19.06.2009, 23:37
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 7  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
2 vvvvvvf: соблюдайте конвенции наименований и, может быть, — будет Вам щастье.
ЗЫ: использовать служебные слова типа Loader и connect - не стоит (хто его знает как они по индусски понимаются)
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 19.06.2009 в 23:40.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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