PDA

Просмотр полной версии : [AS2]помогите с определением метода


Hanzo
20.06.2005, 19:21
public function pl_addStat(stat:String, count:Number):Number {
this.stat -= count;
return this.stat;
}
public function pl_removeStat(stat, count):Number {
this.stat -= count;
return this.stat;
}

Ошыбка:

**Error** D:\My Art\game\player.as: Line 23: There is no property with the name 'stat'.
this.stat -= count;

**Error** D:\My Art\game\player.as: Line 24: There is no property with the name 'stat'.
return this.stat;

**Error** D:\My Art\game\player.as: Line 27: There is no property with the name 'stat'.
this.stat -= count;

**Error** D:\My Art\game\player.as: Line 28: There is no property with the name 'stat'.
return this.stat;

Total ActionScript Errors: 4 Reported Errors: 4

Мне нужен метод класса который принимал бы параметры:
1й. Имя переменной.
2й. Количество.
Изменял переменную класса с именем записаным в параметре stat
И возвращал бы её.
Все просто вроде, но ругается, и это при создании объекта, функции эти я не вызываю.

fiza
20.06.2005, 19:45
public function pl_addStat(stat:String, count:Number):Number {
this[stat] += count;
return this[stat];
}
public function pl_removeStat(stat:String, count:Number):Number {
this[stat] -= count;
return this[stat];
}

попробуй так

Nirth
20.06.2005, 21:10
создай переменную стат

var stat:Type;

silin
20.06.2005, 21:56
создай переменную стат

неверно: с переменной stat метод
function pl_addStat(stat:String, count:Number):Number {
this.stat -= count;
return this.stat;
}
будет ее и менять, независимо от аргумента stat..
в варианте fiza будет меняться переменная переданная строкой методу, чего и хочет автор.

Nirth
20.06.2005, 22:00
ой, извиняюсь и в правду глупость сказал, я просто посмотрел на this и подумал что он меняет свойство класса.

Hanzo
20.06.2005, 22:47
public function pl_addStat(stat:String, count:Number):Number {
this[stat] += count;
return this[stat];
}
public function pl_removeStat(stat:String, count:Number):Number {
this[stat] -= count;
return this[stat];
}

попробуй так

Спасибо, так работает, но вот очень интересный момент.
Я перед тем как запостить пробовал такой вариант:
public function pl_addStat(stat:String, count:Number):Number {
stat = this[stat];
this.stat -= count;
return this.stat;
}

Но он не работал, не понимаю почему.
И еще самое главное, мне надо менять свойство екземпляра(объекта) класса, а не свойство самого класса.

Nirth
20.06.2005, 22:49
this - это ссылка на экземпляр данного класса, а ты обращаешься к внутренней переменной метода, разные области видимости.

Hanzo
20.06.2005, 22:57
this - это ссылка на экземпляр данного класса, а ты обращаешься к внутренней переменной метода, разные области видимости.

Я думаю что понял, спасибо :)