|
ActionScript 3.0 - мощный объектно-ориентированный язык. Если Вы уже знакомы с ActionScript 1.0 или 2.0, Вы должны знать о некоторых языковых различиях между этими языками если вы создаете свое первое приложение на ActionScript 3.0.
Чтобы упростить переход к ActionScript 3.0, ниже собрано несколько подсказок и общих проблем, с которыми Вы могли бы столкнуться во время разработки.
Объявляйте типы для всех переменных, параметров, и возвращаемых значений.
Объявление типа для всех переменных, параметров, и возвращаемых значений не требуется, но это считается хорошим тоном в программировании. Это поможет компилятору давать Вам более точные и полезные сообщения об ошибках. Это также помогает производительности во время выполнения, потому что виртуальная машина будет знать типы переменных, с которыми Вы работаете, заранее.
Обратите внимание, что декларации без указания прав доступа по умолчанию internal, а не public.
по По умолчанию права доступа для деклараций является теперь internal вместо public, означая, что определение является видимым только функции, содержащей определение, не ко всему коду. Это совместимо с другими языками, типа Явы. Поскольку в ActionScript 2.0 права доступа по умолчанию public, это изменение вероятно будет общей ловушкой для программистов, поэтому всегда указывайте права доступа, чтобы сделать код ясным. Чтобы поощрить такую практику, компилятор ActionScript, 3.0 будут выдавать предупреждение, если права доступа не указываются.
В ActionScript 3 добавлено два новых ключевых слова для описания прав доступа и усовершенствовано свойство private по сравнению с ActionScript 2. Итак, теперь мы имеем следующие ключевые слова для регулирования прав доступа:
public
protected
private
internal (по умолчанию)
public: то же самое, что и в ActionScript 2, все определенное как public может быть прочитано откуда угодно.
Конструкторы теперь всегда public.
protected: новое ключевое слово, указывает, что метод или переменная скрыта от всех кроме классов потомков.
Классы и конструкторы не могут быть определены как protected.
private: в ActionScript 2 было это ключевое свойство, но фактически работало как protected, т.е. классы потомки имели полный доступ к методу или свойству, описанному как private. Теперь в ActionScript 3 private это полноценная приватность, т.е. доступ только в этом классе, в котором метод или переменная описана, для всех остальных, включая потомков, она не будет существовать. Это означает, что в классе-потомке можно объявить еще одну переменную или метод с таким же именем и при этом не возникнет никаких конфликтов.
Классы и конструкторы не могут быть определены как private.
internal: аналогично public, но ограничено пределами пакета (package). Только классы, описанные в этом же пакете, будут иметь доступ к internal переменным или методам.
Internal ставится по умолчанию для любого класса, переменным или методам класса, кроме конструкторов, которые всегда public.
Обратите внимание, что по умолчанию классы не являются динамическими, т.е. свойства к классам не могут быть добавлены динамически во времени выполнения.
Классы могут теперь быть или динамические или нет. Динамические классы могут добавить дополнительные динамические свойства во время выполнения. Чтобы объявлять динамический класс, используйте dynamic ключевое слово например, dynamic class Superclass.
Используйте специальный блок package, чтобы поместить определение класса в пакет. Ключевое слово package - новое в ActionScript 3.0.
ActionScript 2.0 code:
class mx.controls.Button { ... }
ActionScript 3.0 code:
package mx.controls { class Button { .. } }
Каждый блок может определять класс или функцию, которая ассоциирована с файлом. Класс или функция с этим блоком должны иметь то же имя, что и *.as файл (не включая расширение «.as»).
package com.kirupa.utils {
function StripString(str:String):void {
// ...
}
}
Всегда используйте аттрибут override(перекрытие)
В ActionScript 3, когда вы перекрываете метод или свойство родительского класса, вы должны использовать аттрибут override. Он указывает на то, что создаваемый вами член класса будет перекрывать тот, который иначе был бы унаследован. Если вы не укажете override для метода, который уже существует в родительском классе, возникнет ошибка компиляции.
Обьявляйте возвращаемые типы в ваших функциях.
Это считается хорошей практикой. Если Вы не укажете тип возвращаемый тип, при компиляции будет отображено предупреждение. Если функция не возвращает никакого значения, объявите его тип возвращения как void.
|