Побочные эффекты от создания класса верхнего уровня в AS3? - PullRequest
0 голосов
/ 15 декабря 2010

Помимо возможных коллизий имен классов, возникнут ли какие-либо проблемы или побочные эффекты при создании класса верхнего уровня (без имени пакета) с именем наподобие «Tracer» в ActionScript 3? Я хочу сохранить такой класс на верхнем уровне, чтобы мне не пришлось использовать операторы импорта для него в моем коде. До сих пор у меня не было никаких проблем.

Ответы [ 4 ]

2 голосов
/ 16 декабря 2010

zzzzBov ответ хороший совет.Но, чтобы ответить на ваш вопрос явно: возможные конфликты имен - действительно единственный побочный эффект от того, что вы делаете.

2 голосов
/ 15 декабря 2010

Лучше всего использовать пакет, когда это необходимо. Если то, что вы создаете, является утилитой, лучше поместить ее в пакет util, чем оставить на верхнем уровне.

Если вы разрабатываете что-то, что можно рассматривать как базовую функциональность , нет проблем с реализацией верхнего уровня члена.

Последнее, что нужно запланировать, это возможность повторного использования . Если вы знаете, что создаете что-то, что никогда не собираетесь использовать повторно (финальные классы реализации), не беспокойтесь слишком сильно о том, чтобы это был класс верхнего уровня, так как он должен продолжать работать после компиляции swf .

Если вместо этого вы создаете функцию, которую хотите повторно использовать в качестве framework , вам, вероятно, лучше поместить ее в качестве члена уровня Framework для гибкости в будущем развитии.

1 голос
/ 29 августа 2012

У меня был класс с именем Vector в пользовательском пакете, использующий flash 9, и все работало идеально, пока мне не пришлось использовать flash 10 для сохранения файлов, проблема заключалась в том, что я не смог создать экземпляр своего класса Vector из-заerror TypeError: Ошибка # 1007: Предпринята попытка создания экземпляра для не-конструктора.Единственным способом исправить это было изменение имени класса AS, к счастью, привязка для внутреннего класса работает с моим классом Java Vector.

Кажется, что flash не заботится о пакете классов для классов верхнего уровня.

Надеюсь, это кому-нибудь поможет, даже если дата этого вопроса почти 2 года назад.

1 голос
/ 16 декабря 2010

Я собираюсь описать возможную проблему, о которой я подумал, и публикую ее, потому что технически это не конфликт имен (регистр букв отличается).

Предположим, у вас есть top-Уровень класса, который разделяет имя пакета верхнего уровня, кроме различий в регистре букв (например, «flash», «fl», «com» ​​или пользовательский пакет).Если вы наберете что-то вроде «var x:», а затем попытаетесь ввести полное имя класса ... тогда механизм завершения кода в программе, такой как FlashDevelop, по умолчанию будет использовать ваш класс «Flash» (если он существует), а не"flash" пакет, который вы, возможно, пытаетесь набрать.Это очень раздражает, в основном потому, что в нем есть какой-то смысл, что он функционирует таким образом, и ему нужно выполнить один или другой код: (

Так что будьте очень осторожны, называя классы верхнего уровня тем, чтопишется так же, как имя пакета (верхнего уровня или иным образом).

...