Скачайте объектно-ориентированную систему
Здесь мы подведём итог по использованию объектно-ориентированной системы в ActionScript, не рассматривая подробно то, как это всё работает. Вообще всё просто. Сначала начнём с рекомендаций по использованию, а потом разберёмся с тем, что обязательно, а что опционально. Вот структура типичного класса:
// имя класса и конструктор ClassName = function( arg0, arg1, arg3 ) { this.super( arg1, arg2 ); this.instanceProp0 = arg0; } // установим свойства класса (это повлияет на прототип) ClassName.prototype.classProperties = function() { this.prop1 = "hello"; this.prop2 = "world"; } // установим методы класса (это повлияет на прототип класса) ClassName.prototype.classMethods = function() { this.method1 = function(){ ... } this.method2 = function(){ ... } } // установим наследование Object.extends( SuperClassName, ClassName );
Первая строка любого конструктора должна быть this.super( ... )
. Любые аргументы, которые бы вы хотели задать конструкторам, должны быть переданы вверх сверхметоду.
Процесс назначения наследованию дополнителя должен происходить в самом конце, если только вы не используете classMethods
, а просто устанавливаете прототипы вручную.
Есть много преимуществ в определении прототипа с помощью classProperties
и classMethods
, хотя это и необязательно.
Особые методы и свойства (расширения ActionScript, инструменты отладки) могут быть помещены в Object.customMethods.prototype.xxx
В этом случае они автоматически станут доступными для всех классов и экземпляров (путаницы не будет).
Вы можете отказаться от использования classProperties
и classMethods
при установлении прототипов. Но тогда свойства прототипов не будут иметь доступа к методам прототипов в процессе назначения и, таким образом, свойства станут "наезжать" на экземпляры. Если вас это не смущает, то можете поступать, как считаете нужным (советую перечитать раздел о this!).
Вы можете передавать по цепи столько аргументов, сколько пожелаете. Но если их число превышает восемь, вам придётся изменить сверхметод, добавляя дополнительные аргументы.
Лучше, если ключевое слово super
будет выглядеть, как _super
, а extends
, как _extends
. В последующих версиях Flash эти слова могут стать резервными. Наверное, скоро это изменится, хотя...