PDA

Просмотр полной версии : Не могу "увидеть" поле и метод


enepx
29.10.2006, 22:09
еще вопросик...
есть класс Device, у него поле dGroup.


function Device(url:String) {
System.useCodepage = true;
src = new XML();
src.load(url);

dGroup="test";
trace(dGroup);

src.onLoad = function(success) {
if (success) {
dGroup = this.childNodes[0].childNodes[0].attributes.name;
}
}
trace(dGroup);
}

Я не могу записать в поле dGroup новое значение. trace и в первый и во второй случай выводит "test". У меня эта проблема с областью видимости всюду. Так же из src.onLoad я не могу вызвать какой-либо метод класса... Проблем много.
Объясните пожалуйста...

DarkLight
29.10.2006, 22:14
трейс стоит снаружи онЛоада, поэтому выполняется раньше загрузки хмл.

enepx
30.10.2006, 07:14
Господа, вопрос-то не в этом. Трейс - это у меня для теста, меняется ли переменная вообще. Вопрос: Как мне достучаться до методов и полей класса из блока (напр.onLoad)?

etc
30.10.2006, 10:33
enepx, например, использовать Delegate:

public function Device(url:String) {
// System.useCodepage = true; Забудьте про это, используйте нормальную кодировку utf-8
thid.src = new XML();
this.src.load(url);

this.dGroup="test";
trace(this.dGroup);

this.src.onLoad = mx.utils.Delegate.create(this,this.onXMLLoad);
}
private function onXMLLoad(success:Boolean):Void {
if (success) {
this.dGroup = this.src.firstChild.firstChild.attributes.name;
}
}

enepx
30.10.2006, 10:43
А как заюзать utf-8? просто без этой строки у меня не выводит строки с кириллицей.

etc
30.10.2006, 10:51
Сохранить хотя бы блокнотом в кодировке utf-8 ваш XML (не забыв внутри в заголовке (если он есть) прописать не windows-1251, а utf-8)