![]() |
|
||||||||||
|
|||||
|
Вопрос таков: есть объект (экземпляр класса) который загружает должен загрузить в себя данные из ХМЛ. написал я это так:
class Myclass{
.................
function loadData(filename){
var tmp_xml = new XML()
tmp_xml.onLoad = function(){
// вот здеся я что то делаю с загружеными данными
.......
//а здеся какимто образом нужно сообщить Myclass что мы загрузили данные.
}
tmp_xml.load(filename)
}
................
}
Можно через прототип, но помоемому это не выход. Как сделать чтоб можно было указать ХМЛ кто его "ПАПА", при этом "не выносить" никаких переменных за мой класс Кто че может посоветовать? |
|
|||||
|
Могу тебе посоветовать поискать по форуму, так как это вопрос один из самых часто задаваемых.
__________________
:::::::::::: sump :::::::::::: |
|
|||||
|
ты мне ченить полезное бы посоветовал, а не поиск - думаешь не искал?, да и за форумом слежу вижу какие темы подымались какие нет!
|
|
|||||
|
объяви у класса Myclass статическое свойство loaded, которое будет инициализироваться по завершению обработки Myclass.loaded=true или статический метод DoSomething, который будет исполняться по завершению обработки твоего xml и вызывай его из ф-ции-обработчика Myclass.DoSomething().
|
|
|||||
|
как я обращусь из ХМЛ к этому методу если я не знаю кто 'ПАПА' этого хмля?
в онЛоаде я не знаю кому пренадлежит этот ХМЛ,в этом то и вся проблема как это выяснить!!!! |
|
|||||
|
Тыпробовал? ты же класс назвал единожды и метод тоже имеет уникальное имя в пределах пространства имен класса. Так в чем проблема? Статические свойства и методы на то и статические, что к ним можно обращаться, не создавая при этом объекта-экземпляра класса. Из любого места твоего кода. Так работает класс Math - ты же можешь пользоваться им везде (хоть и в приведенном коде) и тебя абсолютно не интересует "папа" в твоей функции-обработчике
|
|
|||||
|
уже попробывал %)), но это немного не то!!! мне нужно именно конкретному экземпляру этого класса присвоить значение, а не выполнять определенное действие. или же заставить именно определенный объек этого класса что то делать!!!
|
|
|||||
|
а что мешает создать статическое свойство - массив из объектов твоего класса при инициализации этих самих объектов? А потом вполне ОПРЕДЕЛЕННЫМ объектом из массива и оперировать?
. . . static public var objects:Array; . . . Myclass=function(...){ objects.push(this); } . . . Myclass.objects[5].DoSomething(xml:XML); |
|
|||||
|
ухххххххх, это совсем сложно, помоемому. Представь из-за 1 хмля плодить такие вещи?
эт раз, во вторых в твоем примере я опять же теряю связь с ХМЛем. Myclass.objects[5].DoSomething(xml:XML); - откуда я буду знать а хмл.е (вернее в онЛоаде) что хмл создан именно из 5 объекта ? |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 221
|
Насколько я вижу можно очень просто:
class MyClass {
private var fileName:String = "foo.xml";
private var xml:XML;
public function MyClass(){
this.loadData(this.fileName);
}
private function loadData(fileName:String):Void{
var xml = new XML();
/*
* home можно выставить как угодно, но если 'xml' типизируется, то
* присвоить 'home' не удастся(если только через ассоциативный ...).
*/
//xml.home = this;
var home = this;
xml.ignoreWhite = true;
xml.onLoad = function(){
// ...
home.onDataLoad(this);
}
}
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|