Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   [AS2]помогите с определением метода (http://www.flasher.ru/forum/showthread.php?t=65822)

Hanzo 20.06.2005 19:21

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

        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

Цитата:

Сообщение от Nirth
создай переменную стат

неверно: с переменной 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

Цитата:

Сообщение от fiza
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

Цитата:

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

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


Часовой пояс GMT +4, время: 21:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.