Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
as3_learning.pdf
Скачиваний:
43
Добавлен:
21.05.2015
Размер:
1.8 Mб
Скачать

ИЗУЧЕНИЕ ACTIONSCRIPT 3.0

56

Язык ActionScript и его синтаксис

Оператор is проверяет правильность иерархии наследования и может применяться для проверки не только того, является ли объект экземпляром определенного класса, но также является ли объект экземпляром класса, реализующего определенный интерфейс. В следующем примере создается экземпляр класса Sprite с именем mySprite, который использует оператор is для проверки того, является ли mySprite экземпляром классов Sprite и DisplayObject, а также реализует ли он интерфейс IEventDispatcher.

var mySprite:Sprite = new Sprite(); trace(mySprite is Sprite); // true trace(mySprite is DisplayObject);// true trace(mySprite is IEventDispatcher); // true

Оператор is проверяет иерархию наследования и правильно диагностирует, что mySprite совместим с классами Sprite и DisplayObject (класс Sprite является подклассом класса DisplayObject). Оператор is также проверяет, действительно ли mySprite наследует от какого-либо класса, в котором реализован интерфейс IEventDispatcher. Поскольку класс Sprite наследует от класса EventDispatcher, в котором реализован интерфейс IEventDispatcher, оператор is правильно сообщает, что в классе mySprite также реализован этот интерфейс.

В следующем примере показаны те же тесты из предыдущего примера, но с оператором instanceof вместо оператора is. Оператор instanceof правильно определяет, что класс mySprite является экземпляром классов Sprite или DisplayObject, но он возвращает результат false при попытке проверить, реализует ли класс mySprite интерфейс IEventDispatcher.

trace(mySprite instanceof Sprite); // true trace(mySprite instanceof DisplayObject);// true trace(mySprite instanceof IEventDispatcher); // false

Оператор as

Оператор as также позволяет проверить, является ли переменная или выражение членом определенного типа данных. В отличие от оператора is оператор as не возвращает логические значения. При этом оператор as возвращает значение выражения вместо true или значение null вместо false. В следующем примере показан результат использования оператора as вместо оператора is в простом случае проверки. Определяется, действительно ли экземпляр Sprite является членом типов данных DisplayObject, IEventDispatcher и Number.

var mySprite:Sprite = new Sprite(); trace(mySprite as Sprite); // [object Sprite]

trace(mySprite as DisplayObject); //

[object Sprite]

trace(mySprite

as

IEventDispatcher);

// [object Sprite]

trace(mySprite

as

Number);

// null

При использовании оператора as операнд справа должен быть типом данных. Попытка использовать в качестве операнда справа выражение вместо типа данных приведет к ошибке.

Динамические классы

Динамический класс определяет объект, который может быть изменен во время выполнения путем добавления или изменения свойств и методов. Нединамические классы, такие как класс String, являются запечатанными классами. К запечатанным классам нельзя добавлять свойства или методы во время выполнения.

Динамический класс создается с помощью атрибута dynamic при объявлении класса. Например, в следующем программном коде создается динамический класс с именем Protean.

Последнее обновление 12.5.2011.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]