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

Trace(info. language); // Выводит: undefined

Более подробно динамические возможности языка ActionScript и значение undefined будут рассмотрены в гл. 15.

Типы данных в программе по созданию виртуального зоопарка

Теперь, когда мы получили всю информацию о типах данных, добавим аннотации типов в нашу программу «Зоопарк». В листинге 8.1 представлен измененный код класса VirtualZoo — основного класса программы.

Листинг 8.1. Класс VirtualZoo

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

public class VirtualZoo extends Sprite { private var pet:VirtualPet;

public function VirtualZoo ( ) { pet = new VirtualPet(«Stan»); pet. eat(new Apple( )); pet. eat(new Sushi( ));

Листинг 8.2 демонстрирует код класса VirtualPet, экземпляры которого представляют животных в зоопарке. Обратите внимание на использование операции приведения типов в методе eat ( ), рассмотренной в подразд. «Восходящее и нисходящее приведения типов» разд. «Приведение типов».

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

package zoo { import flash. utils. setlnterval; import flash. utils. clearInterval;

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

private var petName:String;

private var currentCalories:int = Virtual Pet. maxCalories/2; private var digestlntervalID:int;

public function VirtualPet (name:String):void { setName(name);

digestlntervallD = setlnterval(digest. 1000);

}

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

}

if (foodltem is Apple) { // Обратите внимание на приведение к типу Apple if (Apple(foodltem).hasWorm( )) { traceCThe » + foodltem. getName( ) + » had a worm. » + getName( )

+ » didn’t eat it.»): return;

}

}

var newCurrentCalories:int = currentCalories + foodltem. getCalories( ); if (newCurrentCalories > Virtual Pet. maxCalories) {

currentCalories = Virtual Pet. maxCalories; } else {

currentCalories = newCurrentCalories;

}

trace(getName( ) + » ate some » + foodltem. getName( ) + «.»

+ » It now has » + currentCalories + » calories remaining.»);

}

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

public function setName (newName:String):void { // Если длина заданного нового имени // больше maxNameLength символов… if (newName. length > Virtual Pet. maxNameLength) { // …обрезать имя

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

}

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

}

public function getName ( ):String { return petName;

}

private function digest ( ):void { // Если в результате потребления очередной порции калорий // значение переменной currentCalories животного // станет равным 0 или меньше…

if (currentCalories — Virtual Pet. caloriesPerSecond <= 0) {

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

clearlnterval(digestlntervalID);

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

currentCalories = 0;

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

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

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

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

}

}

}

}

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

Листинг 8.3. Класс Food

package zoo { public class Food { private var calories:int;

private var name:String; public function Food (initialCalories:int) { setCalories(initialCalories);

}

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;

}

}

}

Листинг 8.4 демонстрирует код класса Apple, представляющего конкретный вид пищи, принимаемой животными.

Листинг 8.4. Класс Apple

package zoo { public class Apple extends Food { private static var DEFAULT_CALORIES:int = 100; private var wormlnApple:Boolean;

public function Apple (initialCalories:int = 0) { if (initialCalories <= 0) { initialcalories = apple.default_calories;

}

super(initialCalories); wormlnApple = Math. random( ) >= .5; setName(«Apple»);

}

public function hasWorm ( ):Boolean { return wormlnApple;

}

}

}

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

Листинг 8.5. Класс Sushi

package zoo { public class Sushi extends Food { private static var DEFAULT_CALORIES:int = 500:

public function Sushi (initialCalories:int = 0) { if (initialCalories <= 0) { initialcalories = sushi.default_calories:

}

super(i niti alCalories); setName(«Sushi»);

}

}

}

Далее: дополнительное изучение типов данных

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

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

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

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

Полезные ссылки
Случайные записи
  • 11.11.2012">Мини холодильная витрина и её виды
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 082
  • 03.08.2011">Поэт-революционер — новое собрание сочинений
  • 23.05.2012">Machinima привлекла инвестиций на $35 миллионов благодаря Google
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 064
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.68
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.70
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 002
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 084
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 099
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 107
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 008
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 052
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 152
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 010
Опрос

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

View Results

Loading ... Loading ...