PDA

Просмотр полной версии : delegate. есть проблемы.


3s3
23.02.2006, 17:18
Примерный код:


import mx.utils.Delegate;

_global.Foo = function (xml_file) {
this.mData = new Array();

this.mXML = new XML ();
this.mXML.load (xml_file);
this.mXML.onLoad = Delegate.create (this, this.Func1);
};

Foo.prototype.Func1 = function () {
// здесь парсится XML
// и идет запись в массив this.mData
}

Foo.prototype.getData = function () {
trace (this.mData); // ПУСТОЙ!
}



при вызове функции getData оказывается, что все старательно записываемое в массив mData не записалось.

Как решить проблему?

Antares
23.02.2006, 17:29
Не мешать приемы из AS2 и AS1. В вашем случае пользоваться Function.call и все.

3s3
23.02.2006, 23:35
Не мешать приемы из AS2 и AS1. В вашем случае пользоваться Function.call и все.

ок. исправил на вот это:



class Foo {
var mData = new Array();
var mXML = null;

function Foo (xml_file) {
mXML = new XML ();
mXML.func = Func1;
mXML.scope = this;
mXML.onLoad = function (success) {
if (success) {
this.func.call (this.scope);
}
}
};

function Func1 () {
// здесь парсится XML
// и идет запись в массив mData
}

function getData () {
trace (mData); // ОПЯТЬ ПУСТОЙ!
}



что теперь делать? :(

ir73
23.02.2006, 23:54
опять намешал AS 1 и 2 : ))

3s3
24.02.2006, 00:02
будьте любезны -- ткните носом! :)

7thsky™
24.02.2006, 02:11
судя по коду проблема в парсере.

массив возвращается пустой или вместно него undefined?
если первое то проблема по любому в парсере

3s3
24.02.2006, 14:05
судя по коду проблема в парсере.

массив возвращается пустой или вместно него undefined?
если первое то проблема по любому в парсере

нет.
В парсере проблем нет.
Доказано простейшей проверкой, когда я не парсил xml, а делал внутри класса var со значением 1.
В коде парсера я ей ставлю значение 2.
Если протрейсить эту переменную в ф-ции getData, то получаем 1.