![]() |
|
||||||||||
|
|||||
|
Регистрация: 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();
}
}
}
Как правильно написать вышеприведённый работоспособный код? Мне кажется для загрузки файла и для его вывода в TextField должны быть созданы два дополнительных класса или это должно выглядеть ещё как-то но только не так? Ведь основной код начинает засоряться всякими и вообще скоро потеряет ясность. Но я не представляю как это правильно должно выглядеть. |
|
|||||
|
так как судя по твоему коду видно что твой 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. |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 126
|
Спасибо! А как бы ещё сделать так, чтобы всё не было в одной куче? Сейчас то код маленький, но потом например код отображения в TextField разростётся итп.
А что конкретно Макконела? |
|
|||||
|
макконела, совершенный код, советую купить эту книгу и читать перед сном))
ну скажем так... код довольно таки приемлем, но не совсем понятно что нужно сделать, а поэтому - сложно сказать как можно улучшить код... просто нужно сразу определится что в дальнейшем тебе нуно будет а что нет, что нужно обьявляй членом класса так сказать, а что не нужно обьявляй в функци( ибо после того как функция отработает насколько я знаю, все обьявленное в ней удаляется из памяти) еще конечно стоило бы удалить слушатель, прямо в функии 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);// хотя не совсем уверен что это необходимо...
}
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 36
|
2ramshteks
Цитата:
|
|
|||||
|
Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
|
И потом каждый раз когда понадобится будет брать из дисплей листа? И так все остальные DisplayObjects? Или только для этого текстфилда будет исключение? Нечитабельно и getChildByName работает перебором, ресурсы.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
|
|
|||||
|
Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
|
|
|
|||||
|
стервочка (я мужик)
|
vic_, нет конечно
![]() |
|
|||||
|
Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
|
ок, надо будет сравнить время обращения по индексу и по имени
|
![]() |
![]() |
Часовой пояс GMT +4, время: 12:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|