PDA

Просмотр полной версии : Видимость функций в классе


DissDoc
14.07.2007, 17:16
Вообщем проблема :umnik2: У меня не видится переменная класса вот как

class Test
{
private var val:Number;

function mf()
{
function slay()
{
this.val = 9;
}

trace(this.val);
}
}

Вот. И в результате получаем, что val - undefened. Как сдлать так, чобы к val присвоилось значение. Вложенная функция нужна! Этот класс просто максимально упрощенный!

Kikasso
14.07.2007, 17:22
Не надо делать вложеных функций в классах.
class Test{

private var val:Number = 10;

public function Test(){}

private function slay():Void{
val = 9;
}
public function mf():Void{
slay();
trace(val);
}
}
Возможно, вы просто объявили функцию, но не запустили.

DissDoc
14.07.2007, 17:36
А как мне тогда сделать из реального примера (опять же многое сократил)

class Test()
{
private var val:Number;

function loadMyXml(file_path:String)
{
var mapXml:XML = new XML();
mapXml.load(file_path);

mapXml.onLoad = function(success)
{
if (success) {
val = 9;
}
}
trace(val);
}
}

udaaff
14.07.2007, 17:48
trace у тебя таким образом не заработает
Если тебе нужно, чтобы какие то действия выполнялись после загрузки хмл, помещай их в onLoad
имхо Вообще лучше в классе хмл не грузить, а грузить в ролике, а класу передавать узел хмл дерева.

DissDoc
14.07.2007, 18:04
Спасибо за совет. Так и сделал.

DissDoc
14.07.2007, 20:41
Нет. все равно не избавиться от этого! Как передавать переменные/функции во вложенную функцию?(код см выше)

etc
14.07.2007, 21:11
Никаких вложенных функций быть не должно. Используйте Delegate (примеры и все такое есть на форуме).