![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Доброго времени суток.
Есть несколько классов, загружающих информацию(xml, текст, картинки, swf) из внешних файлов. Решил процесс загрузки описать отдельным классом - не получается. Подскажите пжл.как это правильно реализовать: а)Верна-ли вообще сама идея реализовать загрузчик через отдельный класс? б)Конструктор не может быть сеттером - как передать данные объекту, вызвавшему класс? через "this"? в)Как реализовать ожидание окончания загрузки? Вот мой вариант: (нерабочий) package {
import flash.display.Sprite;
public class SomeClass extends Sprite {
public function SomeClass(){
var myXML:XML = new XML();
myXML=XML(new FileLoad("test.xml"));
trace("Загрузили:"+myXML); //Загрузили: [object FileLoad], а не "Загрузили: <xx>.....</xx>"
}
}
__________________
А я Томат. Последний раз редактировалось Torero; 07.10.2007 в 03:17. |
|
|||||
|
4AM Games
|
1) Да
1.1) Класс flash.display.Loader создан для загрузки визуальной информации(swf, jpg, png). тебе нужно юзать flash.net.URLLoader 2) Дело вкуса, я считаю это лишними 500 миллисекундами затрачеными на ненужный апендикс. 3) через события.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
2 Nirth:Спасибо за быстрый ответ.
А) Цитата:
Цитата:
Б) Цитата:
Исправил код загрузчика - все-равно не выдает нужный результат. package {
import flash.display.Loader;
import flash.net.URLRequest;
public class TextLoad extends URLLoader {
public function TextLoad(filepath:String){
var urlReq:URLRequest = new URLRequest(filepath);
this.load(urlReq);
}
}
}
__________________
А я Томат. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
а) Зачем?
б) Конструктор — это функция, которая может иметь параметры; в) Событиями. В целом, писать отдельный класс для этого не вижу нужды. |
|
|||||
|
4AM Games
|
Цитата:
Тоесть я считаю не правильным писать this у __etc другое мнение. Цитата:
Цитата:
Если просто грузить файлы то URLLoader уже существует, он отлично грузит файлы.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ Последний раз редактировалось Nirth; 07.10.2007 в 13:52. |
|
|||||
|
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Цитата:
Цитата:
__________________
А я Томат. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Многократный импорт?
))Директива import лишь указывает компилятору на то, какие области видимости классов нужно создать и все. Перед выполнением кода создается так называемый scope-стек, в котором хранятся все области видимости классов. И, если уж рассуждать логически, то от отдельного класса станет меньше импортов? Нет, не станет, будет столько же + одна штука. Выполнять непосредственную загрузку данных-то кто будет? Да все те же встроенные классы. Идея одного интерфейса хороша, но её уже выполняет URLLoader, который может грузить данные в различных форматах, как в текстовых, так и бинарных. Что делать с полученными данными — решать программисту. |
|
|||||
|
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Цитата:
Реализовал сабж следующим образом: package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.Event
public class SomeClass extends Sprite {
public function SomeClass(){
loadXML();
}
private function loadXML(){
var myXML:XML = new XML();
tL=new FileLoad("test.xml")
tL.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(e:Event){
myXML=XML(tL.data);
loadText()
}
}
private function loadText():void{
var tF:TextField=new TextField();
tL=new FileLoad("ru.txt")
tL.addEventListener(Event.COMPLETE, textLoaded);
addChild(tF);
function textLoaded(e:Event){
tF.htmlText=tL.data;
loadGraph();
}
}
private function loadGraph():void{
var pic:Sprite=new Sprite();
tL=new FileLoad("1.jpg")
tL.addEventListener(Event.COMPLETE, graphLoaded);
addChild(pic);
function graphLoaded(e:Event){
pic=tL.data;
}
}
}
}
package {
import flash.net.URLRequest;
import flash.net.URLLoader;
public class FileLoad extends URLLoader {
public function FileLoad(filepath:String){
var urlReq:URLRequest = new URLRequest(filepath);
this.load(urlReq);
}
}
}
2.Нужно-ли использовать "removeEventListener", если листнер добавляется внутри private-функции? 3. Цитата:
__________________
А я Томат. |
|
|||||
|
4AM Games
|
Цитата:
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
У меня лоудер вынесен в отдельный класс исключетельно из соображения использования одного прелоудера во всём проекте и грузит он при вызове статичного метода loadmc в который передаётся адрес мувика в который нужно грузить или имя клипа который нужно создать, меторасположение лоудера (_х, _у) или булево значение отвечающее за вывод клипа лоудера по центру созданного/указанного мувика. В принципе удобно.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|