Февраль 2011

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

If CgetPetStateC ) != VirtualPet. PETSTATEJULL) { setPetStateC Virtual Pet. PETSTATEJULL);

}

}

// Возвращает количество калорий в «желудке» животного public function getCalories ( ):int { return currentCalories;

}

// Возвращает количество с плавающей запятой, описывающее количество // пищи, оставшееся в «желудке» животного, в процентах public function getHunger ( ):Number { return currentCalories / VirtualPet. maxCalories;

}

// Деактивирует животное private function die ( ):void {

// Останавливаем жизненный цикл животного

stopC );

// Переводим животное в состояние «мертвый» setPetStateCVi rtualPet. PETSTATE_DEAD);

// Отображаем отладочное сообщение, информирующее о смерти животного

• trace(getName( ) + » has died.»);

}

// Уменьшает количество калорий животного в соответствии со скоростью // переваривания пищи этого животного. Этот метод вызывается // автоматически объектом digestTimer. private function digest ( ):void {

trace(getName( ) + » is digesting…»);

setCalories(getCalories( ) — VirtualPet. caloriesPerSecond);

}

// Присваивает целое число, представляющее текущее

// физическое состояние животного

private function setPetState (newState:int):void {

// Если состояние животного не изменилось, выходим из метода

if (newState == petState) { return;

}

// Присваиваем новое состояние petState = newState;

// Умедомляем приемники об изменении состояния животного dispatchEvent(new Event(Vi rtualPet. STATE_CHANGE));

}

// Возвращает целое число, представляющее текущее // физическое состояние животного public function getPetState ( ):int { return petState;

}

// Приемник события для объекта Timer, который управляет // процессом переваривания пищи

private function digestTimerListener (e:TimerEvent):void { // Перевариваем часть пищи digest( );

}

}

}

В листинге П. З представлен код для класса Food, который является суперклассом для различных видов пищи, поедаемой животным.

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

Листинг П. З. Класс Food

package zoo {

// Класс Food является суперклассом для различных видов пищи, // поедаемой животными, public class Food {

// Хранит количество калорий, которым обладает данный кусок пищи

private var calories:int;

// Удобочитаемое название данного куска пищи

private var name.-String;

// Конструктор

public function Food (initialCalories:int) { // Сохраняем указанное первоначальное количество калорий setCal ori es(i ni ti alCalori es);

}

// Возвращает количество калорий, которым обладает данный кусок пищи public function getCalories ( ):int { return calories;

}

// Присваивает количество калорий, которым обладает данный кусок пищи public function setCalories (newCalories:int):void { calories = newCalories;

}

// Возвращает удобочитаемое название данного куска пищи public function getName ( ):String { return name;

}

// Присваивает удобочитаемое название данному куску пищи public function setName (newName:String):void { name = newName;

}

}

}

В листинге П.4 продемонстрирован код для класса Apple, который представляет конкретный вид пищи, принимаемой животным.

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

Листинг П.4. Класс Apple

package zoo { // Класс Apple представляет один из видов пищи. // принимаемой животным public class Apple extends Food {

// Количество калорий в объекте Apple, если не указано другое

private static var DEFAULT_CALORIES:int = 100;

// Хранит информацию о том. является ли

// данный объект Apple червивым

private var wormlnApple:Boolean;

// Конструктор

public function Apple (initialCalories:int = 0) { // Если не было указано допустимое количество калорий… if (initialCalories <= 0) {

//…присваиваем данному объекту Apple количество калорий //по умолчанию initialCalories = Applе. DE FAULT_CALORIES;

}

// Случайным образом определяем, будет ли данный объект Apple червивым

// (50 % вероятность)

wormlnApple = Math. random( ) >= .5;

// Присваиваем название этому куску пищи setName(«Apple»);

}

// Возвращает значение типа Boolean, которое сообщает о том. является ли // данный объект Apple червивым public function hasWorm ( ):Boolean { return wormlnApple;

}

}

}

Наконец, в листинге П.5 продемонстрирован код для класса Sushi, который представляет конкретный вид пищи, принимаемой животным.

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

Листинг П.5. Класс Sushi

package zoo {

// Класс Sushi представляет один из видов пищи, принимаемой животным public class Sushi extends Food {

// Количество калорий в объекте Sushi, если не указано другое

private static var DEFAULT_CALORIES:int = 500;

// Конструктор

public function Sushi (initialCalories:int = 0) { // Если ye было указано допустимое количество калорий… if (initialCalories <= 0) {

//…присваиваем данному объекту Sushi количество калорий по умолчанию initialCalories = Sushi. DEFAULT_CALORIES;

}

// Вызываем конструктор класса Food super(initialCalories);

// Присваиваем название этому куску пищи setNameCSushi»);

}

}

}

В листинге П.6 продемонстрирован код для класса VirtualPetNameException, который представляет исключение, генерируемое в тех случаях, когда указывается недопустимое имя животного.

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

Листинг П.6. Класс VirtualPetNameException

package zoo {

// Класс VirtualPetNameException представляет исключение, генерируемое // в том случае, когда для животного указывается недопустимое имя public class VirtualPetNameException extends Error { // Конструктор

public function VirtualPetNameException (

message:String = «Invalid pet name specified.») { // Вызываем конструктор класса Error super(message);

}

}

}

В листинге П.7 показан код для класса VirtualPetExcessDataException, который представляет исключение, генерируемое в тех случаях, когда указывается слишком длинное имя животного.

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

Листинг П.7. Класс VirtualPetExcessDataException

package zoo {

// Класс VirtualPetExcessDataException представляет исключение.

// генерируемое в том случае, когда для животного указывается слишком

// длинное имя

public class VirtualPetExcessDataException

extends VirtualPetNameException {

// Конструктор

public function VirtualPetExcessDataException ( ) { // Вызываем конструктор класса VirtualPetNameException superC’Pet name too long.»);

}

}

}

В листинге П.8 показан код для класса VirtualPetlnsufficientDataException, который представляет исключение, генерируемое в тех случаях, когда указывается слишком короткое имя животного.

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

Листинг П.8. Класс Virtual PetlnsufficientDataException

package zoo {

// Класс VirtualPetlnsufficientDataException представляет исключение. // генерируемое в том случае, когда для животного указывается слишком // короткое имя

public class VirtualPetlnsufficientDataException

extends VirtualPetNameException {

// Конструктор

public function VirtualPetlnsufficientDataException ( ) { // Вызываем конструктор класса VirtualPetNameException superC’Pet name too short.»);

}

}

}

В листинге П.9 продемонстрирован код для класса VirtualPetView, обеспечивающего графическое представление экземпляра класса VirtualPet.

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

Листинг П.9. Класс VirtualPetView

package zoo { import flash. display.*; import flash. events.*;

import flash. net.*: import flash. text.*:

// Класс VirtualPetView обеспечивает графическое представление экземпляра // класса VirtualPet. Изображения для животного загружаются на этапе // выполнения.

public class VirtualPetView extends Sprite { // Отображаемое животное private var pet:VirtualPet:

// Контейнер для изображений животного private var graphicsContainer:Sprite:

// Изображения и текст животного private var petAlive:Loader: private var petDead:Loader: private var foodHungry:Loader: private var foodStarving:Loader:

private var petName.-TextField;

// Животное в состоянии «живой»

// Животное в состоянии «мертвый»

// Значок для состояния «голодный»

// Значок для состояния «ужасно

// голодный»

// Отображает имя животного

// Пользовательский интерфейс животного

private var appleBtn:FoodButton; // Кнопка для кормления животного

// яблоком

private var sushiBtn:FoodButton; // Кнопка для кормления животного суши // Определение момента завершения загрузки

static private var numGraphicsToLoad:int = 4; // Общее количество

// изображений

private var numGraphicsLoaded:int = 0; // Количество изображений.

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

// загруженных на настоящий // момент

// Конструктор

public function VirtualPetView (pet-.VirtualPet) { // Сохраняем ссылку на отображаемое животное this. pet = pet;

// Регистрируем приемник для получения уведомлений об изменениях // в имени животного

pet. addEventLi stener(Vi rtualPet. NAME_CHANGE.

petNameChangeListener); // Регистрируем приемник для получения уведомлений об изменениях // в состоянии животного pet. addEventLi stener(Vi rtualPet. STATE_CHANGE.

petStateChangeListener);

// Создаем и загружаем’изображения животного createGraphicsContainer( ); createNameTag( ); createUK );

loadGraphics( );

}

// Создает контейнер, в который будут помещены изображения животного private function createGraphicsContainer ( ):void {

graphicsContainer = new Sprite( );

addChi1d(graphi csContai ner);

}

// Создает объект TextField. в котором будет отображаться имя животного private function createNameTag ( ):void { petName = new TextField( );

petName. defaultTextFormat = new TextFormat(«_sans».14.0×006666.true);

petName. autoSize = TextFieldAutoSize. CENTER;

petName. selectable = false;

petName. x = 250;

petName. у = 20;

addChild(petName);

}

// Создает кнопки для пользователя, предназначенные

// для кормления животного

private function createUI ( ):void {

// Кнопка Feed Apple (Дать яблоко)

appleBtn = new FoodButton(«Feed Apple»);

appleBtn. y = 170;

appleBtn. addEventLi stener(MouseEvent. CLICK. appleBtnCli ck); addChild(appleBtn);

// Кнопка Feed Sushi (Дать суши) sushiBtn = new FoodButton(«Feed Sushi»); sushiBtn. y = 190;

sushi Btn. addEventLi stener(MouseEvent. CLICK. sushi BtnCli ck); addChild(sushiBtn);

}

// Блокирует пользовательский интерфейс private function disableUI ( ):void {

appleBtn. disableC );

sushiBtn. disableC );

}

// Загружает и размещает на экране внешние изображения для животного private function loadGraphics ( ):void { // Изображение, представляющее животное в состоянии «живой» petAlive = new Loader( ); petAli ve.1oad(new URLRequest(«pet-a1i ve. gi f»)); petAli ve. contentLoaderlnfo. addEventLi stener(Event. COMPLETE.

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

CompleteListener); petAli ve. contentLoaderlnfo. addEventLi stener(IOErrorEvent. I0_ERR0R.

ioErrorListener);

// Изображение, представляющее животное в состоянии «мертвый»

petDead = new Loader( );

petDead.1oad(new URLRequest(«pet-dead. gif»));

petDead. contentLoaderlnfo. addEventLi stener(Event. COMPLETE.

completeListener); petDead. contentLoaderlnfo. addEventLi stener(IOErrorEvent. I0_ERR0R.



Полезные ссылки
Случайные записи
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 146
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.109
  • 23.08.2011">Покупайте только качественный трикотаж
  • 04.09.2011">SageThumbs — предварительный просмотр любого файла изображения в Windows Explorer
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 046
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.47
  • 19.04.2012">Марк Цукерберг договорился о покупке Instagram за $1 млрд вместо $2 млрд
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 035
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 057
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 110
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.26
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 059
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 104
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 047
  • 21.07.2010">10 подсказок к совершенству
Опрос

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

View Results

Loading ... Loading ...