Приветствую Вас Гость | RSS

Flash. Обо всем по маленьку

Среда, 24.12.2025, 05:32
Главная » Статьи » Уроки ActionScript

Урок 12-1. Классы
Классы – это заранее сформулированные определения или шаблоны для экземпляров объектов. Они описывают свойства, которые имеет объект, а также, какие методы используются при работе с данным объектом. При создании новых объектов в ActionScript создаются экземпляры класса. Практически все в OOP вращается вокруг классов, так как они определяют объекты и объектно-ориентированное программирование.

Флеш-плеер включает много родных классов ActionScript, которые определены внутри и всегда доступны для использования флеш разработчику. Сюда входят такие классы, как Object, Array, Bitmap, MovieClip, Event, и т.д. Любой класс, находящийся внутри стартового пакета флеш, скорее всего, является родным для флеш-плеера.

Пакеты представляют собой наборы классов. Пакеты не только классифицируют классы, но также являются частью определения класса. Например, класс Tween языка ActionScript 3, доступный во Flash CS3, определен внутри пакета fl.transitions. В результате, исходный файл класса Tween (Tween.as) сохранен в папке named transitions (именованные перемещения), которая находится в папке fl.

В своей сущности ActionScript 3 основан на классах. Например, объект Array в ActionScript имеет предопределенный набор свойств и методов, связанных с ним; свойства, такие как length, и методы, такие как push() и pop(). Все они предопределены классом Array, который определен изнутри самим флешем. Если бы вы захотели сделать собственные определения объекта, то вы могли бы создать свой собственный класс, чтобы описать свой объект. Для примера рассмотрим следующий объект, созданный с помощью ActionScript:

// Triangle object represented in code

var rightTriangle:Object = new Object();

rightTriangle.width = 10;

rightTriangle.height = 20;

rightTriangle.area = function():Number {

 return this.width * this.height/2;

}

Этот пример создает объект с именем rightTriangle, у которого есть две переменные, связанные с ним, width и height, а также функцию под названием area, которая определяет площадь прямоугольного треугольника, основанную на значениях width и height. Исходя из функциональности, это делает практически все, что вам нужно, пока необходимо получить обычный прямоугольный треугольник. Но если вы захотите получить больше треугольников, потребуется дублировать этот код для каждого экземпляра треугольника. А что, если вы когда-нибудь захотите проверить, была ли привязана некоторая переменная к значению треугольника? В данном примере тип объекта - rightTriangle – является объектом, а не чем-либо, что специфическим образом показывает, что он является треугольником.

Лучше будет определить класс right triangle и создать новые объекты triangle, создавая новые экземпляры этого класса. Определение rightTriangle в качестве класса могло бы выглядеть примерно так, как показано в следующем участке кода в ActionScript 3:

// Defined in an external ActionScript

// file saved as RightTriangle.as

package {

 public class RightTriangle {

  public var width:Number; 

  public var height:Number;

  public function RightTriangle(width:Number = 0, height:Number = 0){

  this.width = width;

  this.height = height;

  }

  public function area():Number {

  return width*height/2;

  }

 }

}

Это определение имеет такое же содержимое – ширина, высота и площадь – только ему дан немного другой формат и находится оно в отдельном файле ActionScript (текстовый файл с расширением .as). После того, как флеш распознает определение, вы с легкостью можете создать новый объект rightTriangle с помощью следующего кода:

// Code used in Flash

var rightTriangle:RightTriangle = new RightTriangle(10, 20);

Здесь не только было легче создать объект rightTriangle, но он также обладает уникальным типом, который можно использовать при проверке, чтобы увидеть, является ли фактически некоторое значение типом (или происходит от класса) RightTriangle. RightTriangle можно применять в других ситуациях при задании типа, как в случае с переменными и списками параметров в функциях.

Разбив класс на составляющие, мы можем увидеть, что представляет собой каждая строка.

1. package {

Эта строка определяет блок package для класса ActionScript 3. Это новый блок, который не был представлен в ActionScript 2. Он определяет путь к пакету для класса. Так как к данному определению класса RightTriangle не существует пакета, то пути не предоставляется. Если класс был определен в пакете com.senocular.geom, строка будет выглядеть так: package com.senocular.geom {. В ActionScript 2 путь к пакету был бы частью имени класса.

2. public class RightTriangle {

Здесь определяется блок class. Он начинается с ключевого слова class и имени класса. Имя класса должно совпадать с именем файла класса. Атрибут public перед словом class показывает, что этот класс находится в публичном доступе для всех других скриптов. Атрибуты доступа в ActionScript 3 включают:

  public (публичный) 
  private (частный) 
  protected (защищенный)
  internal (внутренний)

Public Access: All (публичный доступ: все)

Если не предоставлен ни один атрибут, то принимается атрибут internal. Он отличается от ActionScript 2, который по умолчанию использовал атрибут доступа public. 

ActionScript поддерживал эти классы, начиная еще с Flash 5 с ActionScript 1, правда только в ActionScript 3 появилось более реальное представление классов. Да и просто не было материала, который бы предоставлял возможность создания классов. В ActionScript 3 все является экземпляром класса, и весь код, который вы пишите, становится частью определения класса, даже если он не написан внутри отдельного ActionScript файла, предназначенного для определения класса.

Это важно, особенно, если вы переходите с ActionScript 1 или ActionScript 2. Код, написанный для ActionScript 1 и ActionScript 2, был либо основан на временной шкале, либо добавлялся к селекторам кнопки или клипа. Даже когда класс был определен в ActionScript 1 или ActionScript 2, все это происходило на временной шкале – там, где был код, была временная шкала. В ActionScript 3, где находится код, существует класс
.
Итак, что это значит применительно к Flash CS3 и ActionScript 3? Должен ли код существовать в виде внешних файлов класса? Можно ли по-прежнему писать код на временной шкале? Что если, вы не знаете, или хотите знать, что-нибудь о классах?

Хорошей новостью является то, что произошло мало изменений в основе написания кода для FLA файлов во Flash IDE, и вы по-прежнему можете писать код на временной шкале, как и всегда. Компилятор, создающий опубликованный SWF файл из вашего FLA файла будет способен обрабатывать все технические проблемы, которые случаются в фоновом режиме вокруг этого нового аспекта ActionScript, во многом точно так же, как он обрабатывает конвертирование классов ActionScript 2 в код ActionScript 1 в фоновом режиме без вашего участия. Это означает, что при работе с ActionScript 3 во флеш, вам и не понадобиться знать что-либо о классах, и не придется разбираться с внешними файлами классов, если вы не хотите.
Категория: Уроки ActionScript | Добавил: anti_k (26.02.2010)
Просмотров: 1112 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]