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

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

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

Регистрация: Jun 2008
Сообщений: 126
По умолчанию Как правильно написать код

Код:
package code {
	import flash.display.*;
	import flash.text.*;
	import flash.events.*;
	import flash.net.*;
	import flash.ui.Mouse;
	import flash.geom.Matrix;
		
	public class RSSAggregator extends Sprite{
		
		private var urlLoader:URLLoader;
		
		public function RSSAggregator(){
			LoadXML();			
		}
		
		private function LoadXML(){
			var urlRequest:URLRequest = new URLRequest("lol.xml");
			urlLoader = new URLLoader( );
			urlLoader.addEventListener(Event.COMPLETE, completeListener);
			urlLoader.load(urlRequest);
		}
		
		private function completeListener(e:Event):void {
			var xml:XML = new XML(urlLoader.data);
			var main:TextField = new TextField();
			addChild(main);
			main.text = xml.toXMLString();
		}
		
	}
}
Начинаю изучать программирование вообще и в частности на AS3.

Как правильно написать вышеприведённый работоспособный код? Мне кажется для загрузки файла и для его вывода в TextField должны быть созданы два дополнительных класса или это должно выглядеть ещё как-то но только не так? Ведь основной код начинает засоряться всякими
Код:
private var urlLoader:URLLoader;
и вообще скоро потеряет ясность. Но я не представляю как это правильно должно выглядеть.

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
так как судя по твоему коду видно что твой URLLoader больше нигде не используется то строчку
Код:
private var urlLoader:URLLoader;
удалить и функцию loadXML
написать вот так:

Код:
private function LoadXML(){
			
			var urlLoader:URLLoader = new URLLoader( );
			urlLoader.addEventListener(Event.COMPLETE, completeListener);
			urlLoader.load(new URLRequest("lol.xml"));
		}
а слушатель к нему так:

Код:
private function completeListener(e:Event):void {
			var xml:XMLDocument = new XMLDocument ();
                                 xml.parseXML(evt.target.data)
			var main:TextField = new TextField();
			addChild(main);
			main.text = xml.toXMLString();
		}
ну это то что можно слету предложить... дальше все зависит от нужд...
судя по названию класса это рсс... ну как я раньше делал, исходя из своего задания, я писал еще один класс, который дожен был работать только с одним полем <item> в рсс( не уверен что верно назвал это полем, скорее содержимым тэга)

Удачи!
Читай Макконела)


Последний раз редактировалось ramshteks; 18.07.2008 в 22:25.
Старый 18.07.2008, 22:36
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 3  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
Спасибо! А как бы ещё сделать так, чтобы всё не было в одной куче? Сейчас то код маленький, но потом например код отображения в TextField разростётся итп.

А что конкретно Макконела?

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
макконела, совершенный код, советую купить эту книгу и читать перед сном))

ну скажем так... код довольно таки приемлем, но не совсем понятно что нужно сделать, а поэтому - сложно сказать как можно улучшить код...
просто нужно сразу определится что в дальнейшем тебе нуно будет а что нет, что нужно обьявляй членом класса так сказать, а что не нужно обьявляй в функци( ибо после того как функция отработает насколько я знаю, все обьявленное в ней удаляется из памяти)

еще конечно стоило бы удалить слушатель, прямо в функии completeListener


Код:
private function completeListener(e:Event):void {
			var xml:XMLDocument = new XMLDocument ();
                                 xml.parseXML(evt.target.data)
			var main:TextField = new TextField();
			addChild(main);
			main.text = xml.toXMLString();
                                  evt.target.addEventListener(Event.COMPLETE, completeListener);// хотя не совсем уверен что это необходимо...
		}
ну и если честно глаза режет тот фкт что вы обьявляете тексфилд в функции а не членом класса. у вас потом просто не будет возможности работать с ним...

Старый 20.07.2008, 13:10
ign вне форума Посмотреть профиль Отправить личное сообщение для ign Найти все сообщения от ign
  № 5  
Ответить с цитированием
ign
 
Аватар для ign

Регистрация: Jan 2008
Сообщений: 36
2ramshteks
Цитата:
ну и если честно глаза режет тот фкт что вы обьявляете тексфилд в функции а не членом класса. у вас потом просто не будет возможности работать с ним...
Он возьмет его из дисплей листа ^_^

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

Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
Цитата:
Сообщение от ign Посмотреть сообщение
2ramshteks

Он возьмет его из дисплей листа ^_^
И потом каждый раз когда понадобится будет брать из дисплей листа? И так все остальные DisplayObjects? Или только для этого текстфилда будет исключение? Нечитабельно и getChildByName работает перебором, ресурсы.

Старый 20.07.2008, 15:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от vic_ Посмотреть сообщение
getChildByName работает перебором
Откуда такая информация?

Старый 20.07.2008, 17:58
vic_ вне форума Посмотреть профиль Отправить личное сообщение для vic_ Посетить домашнюю страницу vic_ Найти все сообщения от vic_
  № 8  
Ответить с цитированием
vic_
 
Аватар для vic_

Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
Цитата:
Сообщение от __etc Посмотреть сообщение
Откуда такая информация?
Где то читал, не помню. Это не так?

Старый 20.07.2008, 18:14
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 9  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
vic_, нет конечно

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

Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
ок, надо будет сравнить время обращения по индексу и по имени

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:56.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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