Вход

Просмотр полной версии : class extends XML


inspace
02.03.2006, 19:17
Пытаюсь сделать функцию внешнего класса, произведенного от XML, которая, забирает имя xml файла и формирует объект на основе данных их xml. Данные не загружаются. Как правильно написать?
Класс:
class xmlData extends XML
{
var newXML:XML;
function xmlData() {
var newXML:XML;
}
function loadXML(str:String) {

this.newXML.onLoad = function(success) {trace("sdf");}
this.newXML.load(str);
}
}
Код
var xl = new xmlData();
xl.loadXML("xmldata.xml");

silin
02.03.2006, 20:29
в твоем раскладе
class xmlData// extends XML
{
var newXML:XML;
function xmlData() {
newXML=new XML();
}
function loadXML(str:String) {

this.newXML.onLoad = function(success) {trace("sdf");}
this.newXML.load(str);
}
}
заметь, что при этом ему вовсе не обязательно наследовать XML..
а уж если наследовать, то незачем еще объект создавать, все методы уже здесь:
class xmlData extends XML {
function loadXML(str:String) {
load(str);
}
function onLoad(success) {trace("sdf");}
}

inspace
04.03.2006, 02:13
silin спасибо.
Вообще, хотелось бы сделать так:
Последовательность пунктов соответствует последовательности кода на AS Panel
1) Создаешь экземпляр класса
2) Применяешь метод к экземпляру класса, метод передает экземпляру класса XML данные
3) Применешь функции класса, позволяющие обрабатывать XML

inspace
06.03.2006, 01:48
Неужели никто не посоветует решения этой проблемы?

Erya
06.03.2006, 02:51
Помоему для твоих описанных нужд подойдёт одна функция, которая принимает XML и возвращает данные скажем в массиве. Ты можешь так же описать эту функцию и в классе, и тебе не обязательно использовать конструктор, это в случае если не нужно наследование от XML, если же оно нужно смотри 2ой пример, который привёл silin.
З.Ы. Действительно ли тебе нужны классы, если ты не можешь определиться нужно ли тебе наследование от XML или нет?

Antares
06.03.2006, 03:59
Неумение определить где нужно наследование, а где -- композиция, увы, говорит об одном. О необходимости немного поучиться.

А пока возьми лучше один из миллиона классов, перегоняющих XML в объект. Но помни, с XML работать всегда удобнее...

inspace
06.03.2006, 12:55
Пользуюсь с композицией. С екстендом конгечно дал лишку.
..."которая принимает XML" Принимает объект? Дело в том, что когда я на панели AS пишу xl = new xmlData(); а затем применяю метод класса xl.loadXML("xmldata.xml") , и после вызываю ещё один метод xmlData, то оказывается, что xmldata.xml не успел ещё подгрузится. поэтому последний вызванный метод не срабатывает. не срабатывает и trace(xl); Вопрос именно по алгоритму... те как возможно сделать так, чтобы инициализация объекта уже произошла тогда, когда вызывается новый метод

silin
06.03.2006, 13:40
>>чтобы инициализация объекта уже произошла тогда, когда вызывается новый метод
можно только наоброт: вызывать метод только после загрузки..
см. XML.onLoad