Просмотр полной версии : class extends XML
Пытаюсь сделать функцию внешнего класса, произведенного от 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");
в твоем раскладе
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");}
}
silin спасибо.
Вообще, хотелось бы сделать так:
Последовательность пунктов соответствует последовательности кода на AS Panel
1) Создаешь экземпляр класса
2) Применяешь метод к экземпляру класса, метод передает экземпляру класса XML данные
3) Применешь функции класса, позволяющие обрабатывать XML
Неужели никто не посоветует решения этой проблемы?
Помоему для твоих описанных нужд подойдёт одна функция, которая принимает XML и возвращает данные скажем в массиве. Ты можешь так же описать эту функцию и в классе, и тебе не обязательно использовать конструктор, это в случае если не нужно наследование от XML, если же оно нужно смотри 2ой пример, который привёл silin.
З.Ы. Действительно ли тебе нужны классы, если ты не можешь определиться нужно ли тебе наследование от XML или нет?
Неумение определить где нужно наследование, а где -- композиция, увы, говорит об одном. О необходимости немного поучиться.
А пока возьми лучше один из миллиона классов, перегоняющих XML в объект. Но помни, с XML работать всегда удобнее...
Пользуюсь с композицией. С екстендом конгечно дал лишку.
..."которая принимает XML" Принимает объект? Дело в том, что когда я на панели AS пишу xl = new xmlData(); а затем применяю метод класса xl.loadXML("xmldata.xml") , и после вызываю ещё один метод xmlData, то оказывается, что xmldata.xml не успел ещё подгрузится. поэтому последний вызванный метод не срабатывает. не срабатывает и trace(xl); Вопрос именно по алгоритму... те как возможно сделать так, чтобы инициализация объекта уже произошла тогда, когда вызывается новый метод
>>чтобы инициализация объекта уже произошла тогда, когда вызывается новый метод
можно только наоброт: вызывать метод только после загрузки..
см. XML.onLoad
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.