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

В гл. 18 вы узнаете, что рекурсия иногда используется для обработки содержимого XML-документов с иерархической структурой.

Использование функций в программе «Зоопарк»

Применим наши новые знания функций к программе по созданию виртуального зоопарка (чтобы освежить в памяти существующий код программы, обратитесь к листингу 4.1, содержащему код класса VirtualPet).

Если помните, в последней версии нашей программы по созданию виртуального зоопарка животные могли только употреблять пищу (то есть накапливать калории), но не переваривать ее (то есть терять калории). Чтобы наши животные могли переваривать пищу, мы добавим новый метод digest ( ) в класс VirtualPet. Метод digest ( ) будет вычитать калории из того объекта VirtualPet, над которым осуществляется вызов данного метода. Чтобы имитировать переваривание пищи в течение времени, мы создадим интервал, используемый для вызова метода digest ( ) один раз в секунду. Количество калорий, потребляемых при каждом вызове метода digest ( ), будет определяться новой статической переменной caloriesPerSecond. Присвоим переменной caloriesPerSecond значение 100, позволяя животному прожить максимум 20 секунд на «полный желудок».

Следующий код демонстрирует описание переменной caloriesPerSecond: private static var caloriesPerSecond = 100;

Далее представлено описание метода digest ( ). Обратите внимание, что, поскольку переваривание пищи является внутренним процессом, метод digest ( ) объявлен с использованием модификатора управления доступом private.

private function digest ( ) { currentCalories -= VirtualPet. caloriesPerSecond;

}

Чтобы создать интервал, вызывающий метод digest ( ) один раз в секунду, воспользуемся собственной функцией setlnterval ( ). Каждое животное должно приступать к перевариванию пищи сразу после его создания, поэтому поместим вызов функции setlnterval ( ) в метод-конструктор класса Virtual Pet. Кроме того, сохраним идентификатор интервала, возвращаемый функцией setlnterval ( ), в новой переменной экземпляра digestlntervallD, чтобы в дальнейшем при необходимости можно было удалить созданный интервал.

Следующий код демонстрирует описание переменной digestlntervallD: private var digestlntervallD;

Измененный конструктор класса VirtualPet выглядит так:

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

// Вызывать метод digest( ) один раз в секунду digestlntervallD — setlnterval(digest, 1000);

}

Теперь, когда объекты класса VirtualPet могут переваривать пищу, воспользуемся глобальной функцией t race ( ), чтобы сообщать о текущем состоянии каждого животного в процессе отладки. Будет выдаваться сообщение о состоянии всякий

раз при выполнении методов digest ( ) или eat ( ). Обновленная версия метода digest ( ) выглядит следующим образом:

private function digest ( ) { currentCalories -= VirtualPet. caloriesPerSecond:

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

}

Обновленная версия метода eat ( ):

public function eat (numberOfCalories) { var newCurrentCalories = currentCalories + numberOfCalories; if (newCurrentCalories > VirtualPet. maxCalories) {

currentCalories = VirtualPet. maxCalories; } else {

currentCalories = newCurrentCalories;

}

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

}

Если бы мы запустили нашу программу «Зоопарк» прямо сейчас, то увидели бы следующие сообщения в окне Output (Вывод) (среда разработки Flash) или Console (Консоль) (Flex Builder):

Stan digested some food. It now has 900 calories remaining. Stan digested some food. It now has 800 calories remaining. Stan digested some food. It now has 700 calories remaining. Stan digested some food. It now has 600 calories remaining. Stan digested some food. It now has 500 calories remaining. Stan digested some food. It now has 400 calories remaining. Stan digested some food. It now has 300 calories remaining. Stan digested some food. It now has 200 calories remaining. Stan digested some food. It now has 100 calories remaining. Stan digested some food. It now has 0 calories remaining. Stan digested some food. It now has -100 calories remaining. Stan digested some food. It now has -200 calories remaining. Stan digested some food. It now has -300 calories remaining.

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

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

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

Полезные ссылки
Случайные записи
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 038
  • 07.08.2011">iPhone 5 — ждать осталось недолго
  • 14.08.2011">Система видеонаблюдения – выбери лучшее
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.19
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.155
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.10
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 029
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 037
  • 25.07.2011">Прикольные статусы на каждый день
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.112
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 009
  • 17.03.2011">Руководство по actionscript. часть 3, стр. 002
  • 19.11.2011">Обзор HTC Radar
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.90
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 045
Опрос

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

View Results

Loading ... Loading ...