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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.07.2015, 18:41
AlexAS3 вне форума Посмотреть профиль Отправить личное сообщение для AlexAS3 Найти все сообщения от AlexAS3
  № 1  
Ответить с цитированием
AlexAS3

Регистрация: May 2014
Сообщений: 29
По умолчанию Загрузка данных в другом классе

Как грамотно реализовать загрузку данных (json с сайта) в другом классе?
Основной должен получать 2 переменные:
_polyW = data.getPolyWidth();
_polyH = data.getPolyHeight();

а загрузка происходит в другом классе следующим образом:
Код AS3:
public class OnlineData extends Sprite
	{
		private var _polyWidth:int;
		private var _polyHeight:int;
		private var myLoader:URLLoader;
 
		public function OnlineData()
		{
 
			var json_URL:String = "http://***";			
			var myJSONURL:URLRequest = new URLRequest(json_URL); 			
			myLoader = new URLLoader(myJSONURL); 
			myLoader.addEventListener(Event.COMPLETE, jsonLoaded, false, 0, true); 
		}
		public function getPolyWidth():int
		{
			return _polyWidth;
		}
		public function getPolyHeight():int
		{
			return _polyHeight;
		}
 
		private function jsonLoaded(event:Event):void 
		{
			myLoader.removeEventListener(Event.COMPLETE, jsonLoaded);			
			var myJSON:String = String(myLoader.data); 
			trace (myJSON);
			var json_data:Object=com.adobe.serialization.json.JSON.decode(myJSON);	
			//проверка, есть ли такие свойства
			if (json_data.hasOwnProperty("width") && json_data.hasOwnProperty("height"))
			{					
				_polyWidth = int(json_data["width"]);
				_polyHeight = int(json_data["height"]);	
				trace (_polyWidth);
 
			}				
		}
	}
получается, что данные загружаются уже после того, как срабатывают функции
_polyW = data.getPolyWidth();
_polyH = data.getPolyHeight();
так как trace выдает все правильно, но polyW и PolyH нулевые.

Как сделать, чтобы данные попадали в другой класс?

Старый 26.07.2015, 18:53
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 2  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Может быть после получения и обработки данных диспатчить событие, и потом только забирать свойства getPolyWidth и getPolyHeight?

Старый 01.08.2015, 23:36
AlexAS3 вне форума Посмотреть профиль Отправить личное сообщение для AlexAS3 Найти все сообщения от AlexAS3
  № 3  
Ответить с цитированием
AlexAS3

Регистрация: May 2014
Сообщений: 29
Цитата:
Сообщение от alexandrratush Посмотреть сообщение
Может быть после получения и обработки данных диспатчить событие, и потом только забирать свойства getPolyWidth и getPolyHeight?
Можете подсказать, как это сделать? Или где об этом хорошо написано? Что-то не нашел нужной информации (

Старый 02.08.2015, 00:31
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
	public class OnlineData extends EventDispatcher
	{
		public const DATA_LOADED:String = "dataLoaded";
		private var _polyWidth:int;
		private var _polyHeight:int;
		private var myLoader:URLLoader;
 
		public function OnlineData()
		{
		}
		public function load():void
		{
			var json_URL:String = "http://***";			
			var myJSONURL:URLRequest = new URLRequest(json_URL); 			
			myLoader = new URLLoader(myJSONURL); 
			myLoader.addEventListener(Event.COMPLETE, jsonLoaded, false, 0, true); 
		}
		public function get polyWidth():int
		{
			return _polyWidth;
		}
		public function get polyHeight():int
		{
			return _polyHeight;
		}
 
		private function jsonLoaded(event:Event):void 
		{
			myLoader.removeEventListener(Event.COMPLETE, jsonLoaded);			
			var myJSON:String = String(myLoader.data); 
			trace (myJSON);
			var json_data:Object=com.adobe.serialization.json.JSON.decode(myJSON);	
			//проверка, есть ли такие свойства
			if (json_data.hasOwnProperty("width") && json_data.hasOwnProperty("height"))
			{					
				_polyWidth = int(json_data["width"]);
				_polyHeight = int(json_data["height"]);	
				trace (_polyWidth);
 				dispatchEvent(new Event(DATA_LOADED));
			}				
		}
	}
В "другом классе" (пример использования):
Код AS3:
private var _onlineData:OnlineData = new OnlineData();
_onlineData.addEventListener(OnlineData.DATA_LOADED, onDataLoaded);
_onlineData.load();
//...
private function onDataLoaded(event:Event):void
{
	trace("- - - - - - - - - - - - - - -");
	trace(_onlineData.polyWidth);
	trace(_onlineData.polyHeight);
}
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 02.08.2015 в 23:59.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
AS3 , urlloader , данные , загрузка данных
Опции темы
Опции просмотра

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

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


 


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


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