Руководство по actionscript. часть 1, стр. 102

Но в чем же дело? Количество калорий у животных не должно принимать отрицательных значений. Вместо этого животные должны умирать, когда значение переменной currentCalories достигнет 0. В нашей программе состояние смерти будет выражаться следующим образом.

? Если значение переменной currentCalories равно 0, программа будет игнорировать любые попытки увеличить значение переменной currentCalories путем вызова метода eat ( ).

? Когда значение переменной currentCalories станет равным 0, программа удалит интервал, с помощью которого вызывается метод diges t ( ), и отобразит сообщение о «смерти животного».

Сначала модифицируем метод еа t ( ). С поставленной задачей должен справиться простой условный оператор:

public function eat (numberOfCalories) { // Если это животное мертво, if (currentCalories = 0) {

// …завершить метод, не изменяя значение переменной

// currentCalories

trace(getName( ) + » is dead. You can’t feed it.»); return;

}

var newCurrentCalories = currentCalories + numberOfCalories; if (newCurrentCalories > Virtual Pet. maxCalories) {

currentCalories = VirtualPet. maxCalories; } else {

currentCalories = newCurrentCalories;

}

trace(getName( ) + » ate some food. It now has » + currentCalories + » calories remaining.»);

}

Теперь мы должны остановить процесс вызова метода diges t ( ), когда значение переменной currentCalories достигнет 0. Для этого воспользуемся функцией flash. utils. clearlnterval ( ):

private function digest ( ) { // Если в результате потребления очередной порции калорий значение // переменной currentCalories станет равным 0 или меньше… if (currentCalories — VirtualPet. caloriesPerSecond <= 0) {

// …прекратить вызов метода digest( )

clearlnterval(digestlntervallD);

// После чего очистить желудок животного

currentCalories = 0;

// и сообщить о смерти животного

trace(getName( ) + » has died.»); } else {

// …иначе употребить оговоренное количество калорий currentCalories -= VirtualPet. caloriesPerSecond;

// и сообщить о новом состоянии животного trace(getName( ) + » digested some food. It now has » + currentCalories + » calories remaining.»);

}

}

В листинге 5.3 представлен целиком весь код класса VirtualPet, включая все внесенные изменения.

Листинг 5.3. Класс VirtualPet

package zoo { import flash. utils. set Interval; import flash. utils. clearInterval;

internal class VirtualPet { private static var maxNameLength = 20; private static var maxCalories = 2000; private static var caloriesPerSecond = 100;

private var petName;

private var currentCalories = VirtualPet. maxCalories/2; private var digestlntervallD;

public function VirtualPet (name) { setName(name);

digestlntervallD = setlnterval (digest. 1000);

}

public function eat (numberOfCalories) { if (currentCalories == 0) { trace(getName( ) + » is dead. You can’t feed it.»); return;

}

var newCurrentCalories = currentCalories + numberOfCalories; if (newCurrentCalories > Virtual Pet. maxCalories) {

currentCalories = VirtualPet. maxCalories; } else {

currentCalories = newCurrentCalories;

}

trace(getName( ) + » ate some food. It now has » + currentCalories + » calories remaining.»);

}

public function getHunger ( ) { return currentCalories / Virtual Pet. maxCalories;

}

public function setName (newName) { // Если длина заданного нового имени больше maxNameLength // символов…

if (newName. length > Virtual Pet. maxNameLength) { // …обрезать имя

newName = newName. substr(0. VirtualPet. maxNameLength); } else if (newName == «») { // …в противном случае, если заданное новое имя является // пустой строкой, завершить выполнение метода, не изменяя // значения переменной petName return;

}

// Присвоить новое, проверенное имя переменной petName petName = newName;

public function getName ( ) { return petName;

}

private function digest ( ) { // Если в результате потребления очередной порции калорий значение // переменной currentCalories животного станет равным 0 или меньше… if (currentCalories — Virtual Pet. caloriesPerSecond <= 0) {

// …прекратить вызов метода digest( )

clearlnterval(digestlntervalID);

// После чего очистить желудок животного

currentCalories = 0;

// и сообщить о смерти животного

trace(getName( ) + » has died.»); } else {

// …иначе употребить оговоренное количество калорий currentCalories -= VirtualPet. caloriesPerSecond;

// и сообщить о новом состоянии животного trace(getName( ) + » digested some food. It now has + currentCalories + » calories remaining.»);

Обратно к классам

Мы рассмотрели функции в языке ActionScript. В следующей главе мы вернемся к теме классов, уделив особое внимание наследованию при создания отношений между двумя или более классами. Разобравшись с вопросами наследования, мы сможем подготовить нашу программу по созданию виртуального зоопарка для компиляции и выполнения.

ГЛАВА 6

Наследование

В объектно-ориентированном программировании термин «наследование» обозначает формальное отношение между двумя или более классами, при котором один класс заимствует (или наследует) описания переменных и методов другого класса. С практической, или технической, точки зрения наследование просто позволяет использовать код одного класса в другом классе.

Однако наследование подразумевает нечто гораздо большее, чем повторное использование кода. Оно в равной мере является интеллектуальным и техническим инструментом и позволяет программистам концептуально представить группу классов в виде иерархических отношений. В биологии наследование представляет собой генетический процесс, при котором одно живое существо передает по наследству свои характерные черты другому существу. Вам говорят, что вы унаследовали глаза матери или нос отца, даже несмотря на то, что вы не похожи в точности ни на одного из родителей. В объектно-ориентированном программировании наследование имеет похожий смысл. Оно позволяет одному классу быть во многом подобным другому классу, но при этом обладать собственными уникальными свойствами.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 12.04.2011">Photoshop для начинающих: как вставить фото в готовую рамку?
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 084
  • 21.03.2011">Руководство по actionscript. часть 2, стр. 051
  • 10.03.2011">Руководство по actionscript. часть 4, стр. 043
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.69
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.5
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.76
  • 02.03.2011">Руководство по actionscript. часть 5, стр. 104
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 124
  • 11.03.2011">Руководство по actionscript. часть 4, стр. 005
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 100
  • 11.03.2011">Руководство по actionscript. часть 3, стр. 148
  • 11.08.2011">Пропуск на модный олимп
  • 24.02.2011">Руководство по actionscript. часть 6, стр. 107
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 092
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...