FlashDevelop: хорошо шаблоним
Есть такая отличная программа для написания кода - Flash Develop.
Она поражает красотой компиляции, простотой настройки, удобством использования. И есть у неё одна "киллер"-фича, по моему мнению - это Contextual Code Generation. По умолчанию вызывается по ctrl+shift+1. Благодаря ей можно генерировать getters/setters, создавать методы-обработчики, переносить переменные из локальных в приватные поля класса... Много умеет и очень экономит время написания кода.
Но вот только не всё делает она по фен-шую. Например, сеттеры и геттеры она генерирует без проверки на текущее значение переменной, это не совсем правильно. И в обработчиках она создаёт имя аргумента e:Event, а не event - как просит нас Code convention. Но всё поправимо:
В Flash Develop выбираем Tools -> Application Files,
Далее идём в Data/ASCompletion и обнаруживаем файл Generator.txt
Он то нам и нужен, в нём мы можем изменять генерацию кода как нам угодно.
Вот мой:
Код:
ImplementHeader $(Boundary)\n\n/* INTERFACE {0} */ ImplementPart \n\n{0}$(CSLB){{\n\t{1}\n}} Function {0}$(CSLB){{\n\t\n}} Variable {0}$(EntryPoint); Delegate {0} function {1}():{2} $(CSLB){{\n\t$(EntryPoint)\n}} EventHandler {0} function {1}(event:{2}):{3} $(CSLB){{\n\t$(EntryPoint)\n}} Getter {0} function get {1}():{2} {{ $(EntryPoint)return {3}; }} Setter {0} function set {1}(value:{2}):{4} $(CSLB){{\n\tif ({3} == value) return;\n\t$(EntryPoint){3} = value;\n}} MethodOverride ({0}):{1} $(CSLB){{\n\t$(EntryPoint){2}\n}}
Идём в корень FlashDevelop`а и видим папку Projects. Внутри заготовки для создания проектов - проекты я создаю только AS3 - AS3 Project, поэтому лезу в
Projects\120 ActionScript 3 - AS3 Project\src\$(PackagePath)
и меняю файл Main.as.template:
package $(PackageName)$(CSLB){ import flash.display.Sprite; import flash.events.Event; /** $(CBI)* ... $(CBI)* @author $(DefaultUser) $(CBI)*/ public class Main extends Sprite $(CSLB){ public function Main():void $(CSLB){ if (super.stage) init(); else super.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(event:Event = null):void $(CSLB){ super.removeEventListener(Event.ADDED_TO_STAGE, init); // entry point } } }

А ещё я пишу super, в примере я тоже проставил super куда надо. Кто-то пишет this, но не пишет super, кто то пишет и то, и то - это дело вкуса и требование компании, в которой Вы работаете. Файл прост, я уверен, что Вы сможете сделать его таким, каким Вам надо

Чтобы писалось private static вместо static private и им похожим при генерации кода по ctrl+shift+1 - как просит нас Code Convention - можно поменять флаг вот здесь:
F10 -> Settings -> ASCompletion -> Start Declaration With Access Modifier
Спасибо Mur4ik за информацию.
Всего комментариев 43
Комментарии
![]() ![]() |
|
Тигер, полезно, но в версии в моей версии 3.2.1 нет Generator.txt по указанному адресу ни где-либо еще...
|
![]() ![]() |
|
В 3.2.2 точно есть.
|
![]() ![]() |
|
У меня вообще 3.0.6 стоит, и файл есть
![]() |
![]() ![]() |
|
Круто, спасибо! А я-то думал - где все это найти... =)
|
![]() ![]() |
|
Цитата:
А я привык к e. Думаю сложно не понять что это.
Цитата:
Вызов контекст-генератора у меня стоит на кнопке alt+a (типа авто)- код пишу всегда с ним
До того обленился, что ФБ напрягает, не говоря о флэшЦС. + я пишу this перед именем обработчика в addEventListener (хандлер, как правило - приватный метод этого же класса). И контекстный генератор тут же погибает, предлагая сгенерировать обычный метод. Цитата:
Например, хочу автогенерацию метатега [Event..] на dispatchEvent повесить..
Читал, что и в FD должно выскакивать MyEvent.SOME_EVENT, но сколько не копипастил примеры, сколько не экспериментировал - лезут все те же нативные эвенты. Разве что... для справки генерить. Мол, посмотрел на список Event-тегов и понял, что класс "умеет" слушать/испускать? Цитата:
А как написать свой генератор?
UPD: Цитата:
Круто, спасибо! А я-то думал - где все это найти... =)
|
|
Обновил(-а) switcher! 26.08.2010 в 22:22
|
![]() ![]() |
|
Цитата:
А для AS3+FD он вообще хоть для чего-то нужен?
Цитата:
Читал, что и в FD должно выскакивать MyEvent.SOME_EVENT, но сколько не копипастил примеры, сколько не экспериментировал - лезут все те же нативные эвенты.
нужно перед описанием класса вставить: Цитата:
Использую только, чтобы сгенерить метод из названия и проставить импорты. Иногда get/set методы, под настроение. В остальном - не удобно. Генерация контекстных методов происходит либо сразу за телом текущего метода, либо в конце класса. А потом его приходится вручную тащить в сортированные по имени и модификатору доступа списки методов.
А тащить куда-то и переформировывать саму структуру текста - глупости - есть smart в панели Outline и кнопка ф4. |
|
Обновил(-а) Котяра 26.08.2010 в 22:35
|
![]() ![]() |
|
![]() ![]() |
|
если в супере нет тега - то с какого он должен автокомплититься?
|
![]() ![]() |
|
а с какого он считает, что если я добавляю слушатель по сигнатуре метода суперкласса, то и эвенты я могу слушать только его, родные ?
|
![]() ![]() |
|
а вообще я против употребления super.method. иногда это мешает, но ни разу не помогало.
|
![]() ![]() |
|
Цитата:
А тащить куда-то и переформировывать саму структуру текста - глупости - есть smart в панели Outline и кнопка ф4.
|
![]() ![]() |
|
Outline не пользуюсь, а ctrl+F и F4 жму постоянно.
Не ожидал столько комментариев на эту статью. ) |
![]() ![]() |
|
Цитата:
FD умеет всего-то процентов 20 от того, что в FDT есть (я про contextual code generation)
Цитата:
это поможет всего лишь в 30% случаев, остальное захардкодено
![]() |
|
Обновил(-а) Mur4ik 28.08.2010 в 21:47
|
![]() ![]() |
|
Цитата:
Как раз это было в моем TODO листе, будет в следующей версии (не та, которая на днях будет, а следом)
|
![]() ![]() |
|
Цитата:
я теперь не делаю патчи, я теперь сам коммиттер.
|
![]() ![]() |
|
ir73, Вы наверно, путаете с другим языком. По конвенции у нас static стоит после. Во всяком случае так написано)
http://opensource.adobe.com/wiki/dis...ng+Conventions Код:
The static keyword If present, put this after the access specifier. Do this: public static const MOVE:String = "move" Not this: static public const MOVE:String = "move"; |
|
Обновил(-а) Psycho Tiger 29.08.2010 в 16:36
|
![]() ![]() |
|
ir73, я честно слоупок в деле svn и окололежащих. Я понимаю, что это, как это, но это дело у меня идёт очень тяжело.
Вы очень молодец, что внесли много разных фич в FD и мне очень хочется их попробовать. Людям удается это сделать до релиз версии 3.2.3, как я понимаю, и я тоже очень хочу. Пожалуйста, дайте ссылку или пинок в каком направлении двигаться, чтобы у меня получилось. P.S. я почти вменяемый. |
|
Обновил(-а) Psycho Tiger 29.08.2010 в 20:43
|
![]() ![]() |
|
Кстати да, ir73, поддерживаю Котяру.
Можно попросить чтобы по dispatchEvent автоматически добавлялся метатег? Если Вы сделаете это - будет очень здорово. |
![]() ![]() |
|
если не билдить из свн, то тогда отсюда можно скачать
http://www.flashdevelop.org/communit...t+build#p15998 но это не самый последний |
![]() ![]() |
|
Цитата:
Кстати да, ir73, поддерживаю Котяру.
Можно попросить чтобы по dispatchEvent автоматически добавлялся метатег? Если Вы сделаете это - будет очень здорово. |
![]() ![]() |
|
Молодец, огромное спасибо))
PS: лично от меня небольшое пожелание на будущее: если не сложно, было бы круто иметь в настройках отдельную подсветку для входящих параметров функции ![]() |
|
Обновил(-а) i.o. 31.08.2010 в 11:55
|
![]() ![]() |
|
Спасибо за очередной плагин. Очень ценим.
|
![]() ![]() |
|
клаасно вам а как же быть маководам (параллели не ставлю)
|
![]() ![]() |
|
по идее - можно создать форк и под моно компилить.. только никто этим не занимается.. есть наверное расхождения с чистым .net.
|
![]() ![]() |
|
какой-то порт FD в процессе, демаю в этом году будет что-то гоотовое. Но вообще, человек, покупая мак, осознанно идет на то, что софта под него в 1000 раз меньше чем на виндоусе.
|
![]() ![]() |
|
ну ,человек, в моем случае,я, покупал мак в первую очередь для музтворчества ( :
а потом уже, как оказалось, стал флешером ггггг |
![]() ![]() |
|
Можно купить и нормальный ноут для работы.
|
![]() ![]() |
|
а нахрена мак для музтворчества? под винду мало кубэйзов и всяких асидов?
Легенда про "супер приспособленность мака для дизайнеров и музыкантов" ? Враньё полное. |
![]() ![]() |
|
3p.station, не продавай макбук, возможно ты еще переквалифицируешься в руббисты (:
|
![]() ![]() |
|
Generator.txt нет в папке, как быть? (версия 3.3.4)
|
![]() ![]() |
|
gloomyBrain, спасибо
Извините что тут пишу, подскажите плиз как автоматически отформатировать код во FlashDevelop (типа кнопки "Автоформат" во flash ide), никак не могу найти (а может и нет её) |
|
Обновил(-а) SARFEX 21.05.2011 в 16:45
|
Последние записи от Psycho Tiger
- Тонкости и трюки ActionScript`а, которые... бесполезны (10.05.2011)
- Vkontakte: как пользоваться wall.post, нужен ли теперь wall.savePost? (05.03.2011)
- А пятый контер-страйк хорош. (19.01.2011)
- Пацаны, гоу Вконтакте? (21.12.2010)
- Давайте начистоту (18.12.2010)