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

В программе по созданию виртуального зоопарка помимо создания видов пищи у наследования есть еще одно применение. Познакомимся с ним.

Подготовка класса VirtualZoo для отображения на экране

Поскольку язык ActionScript применяется для создания графического содержимого и пользовательских интерфейсов, основной класс любой программы на языке ActionScript должен расширять либо класс flash. display. Sprite, либо класс flash. display. MovieClip. И Sprite и MovieClip представляют собой контейнеры для графического содержимого, отображаемого на экране.

Класс MovieClip используется в тех случаях, когда основной класс программы связан с FLA-файлом (документ среды разработки Flash) (более подробную информацию можно найти в гл. 29). В остальных случаях используется класс Sprite.

При открытии нового SWF-файла среда выполнения Flash создает экземпляр основного класса этого файла и добавляет созданный экземпляр в иерархический список объектов, которые отображаются в данный момент на экране. Этот список называется списком отображения. Попав в список отображения, экземпляр класса может использовать унаследованные методы класса Display Ob j ect (потомками которого являются классы Sprite и MovieClip) для добавления другого графического содержимого на экран.

Наша программа по созданию виртуального зоопарка в конечном итоге будет отображать графическое содержимое на экране. Однако перед этим придется многое узнать о списке отображения и программировании графики. Все эти темы подробно рассматриваются в части II книги.

Пока же, чтобы запустить нашу программу в ее текущем состоянии, мы должны выполнить требование, заключающееся в том, что основной класс любой программы на языке ActionScript должен расширять либо класс Sprite, либо класс MovieClip.

Наша программа не содержит никаких элементов среды разработки Flash, поэтому основной класс программы VirtualZoo расширяет класс Sprite:

package zoo { import flash. display. Sprite;

public class VirtualZoo extends Sprite { private var pet;

public function VirtualZoo ( ) { pet = new VirtuaTPetC’Stan»); pet. eat(new Apple( )); pet. eat(new Sushi( )):

}

}

}

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

Код программы Virtual Zoo

Листинг 6.3 демонстрирует код класса VirtualZoo — основного класса программы.

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

package zoo { import flash. display. Sprite;

public class VirtualZoo extends Sprite { private var pet;

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

}

}

}

Листинг 6.4 демонстрирует код класса VirtualPet, экземпляры которого представляют животных в зоопарке.

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

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

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 (foodltem) { if (currentCalories == 0) { trace(getName( ) + » is dead. You can’t feed it.»); return;

}

if (foodltem is Apple) { if (foodltem. hasWorm( )) { traceCThe » + foodltem. getName( ) + » had a worm..» + getName( )

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

}

}

var newCurrentCalories = currentCalories + foodltem. getCalories( ); if (newCurrentCalories > VirtualPet. maxCalories) {

currentCalories = Virtual Pet. maxCalories; } else {

currentCalories = newCurrentCalories;

}

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

+ » 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 — VirtualPet. 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.»);

}

}

}

}

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

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

package zoo { public class Food { private var calories; private var name;

public function Food (initialCalories) { setCalories(initial Calories);

}

public function getCalories ( ) { return calories;

}

public function setCalories (newCalories) { calories = newCalories;

}

public function getName ( ) { return name;

}

public function setName (newName) { name = newName:

}

}

}

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

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

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

public function Apple (initialCalories = 0) { if (initialCalories <= 0) {

initialCalories = Applе. DEFAULT_CALORIES;

}

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

}

public function hasWorm ( ) { return wormlnApple;

}

}

}

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

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

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

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

}

super(initialCalories): setNameCSushi»);

Первый запуск!

Благодаря изменениям, внесенным в программу по созданию виртуального зоопарка в этой главе, наше приложение теперь готово к компиляции и выполнению. Надеюсь, что вы испытываете нескрываемое волнение в преддверии изучения следующей главы. Из нее вы узнаете, как запустить программу после того, как она будет скомпилирована с помощью среды разработки Flash, приложения Flex Builder или компилятора mxmlc.

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

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

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

Полезные ссылки
Случайные записи
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.33
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 130
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 065
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 033
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 119
  • 12.01.2010">Удобная твиттер лента в блоге на jQuery
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 100
  • 17.03.2011">Руководство по actionscript. часть 3, стр. 002
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.103
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 065
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.66
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 001
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 003
  • 17.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.9
  • 12.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.109
Опрос

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

View Results

Loading ... Loading ...