Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > КорДум

Оценить эту запись

Приятное программирование: знакомство с FlashDevelop (часть 2)

Запись от КорДум размещена 18.12.2010 в 01:01
Обновил(-а) КорДум 10.01.2011 в 23:24

Предыдущая статья закончилась в лучших традициях сериального жанра – на самом интересном. Сейчас я все-таки расскажу, как это – писать код в FD. Если во FlashIDE мы радовались, что нет-нет, да вылезет какая-то всплывающая подсказка или список для автокомплита, встречали ее с хлебом и солью, но большинство вещей (да что там, почти все, верно?) писали исключительно полностью руками. Так вот, здесь все иначе. И иначе в очень даже положительную сторону. Почти все, что мы напишем, вызовет, пожалуй, самую приятную штуку, из-за которой мне полюбился редактор – автокомплит. Теперь шанс опечатки сводится к минимуму, все наши методы и переменные тут же появляются в списке выбора и подстраиваются под первые буквы напечатанного слова. Захотели переопределить метод – написали override, поставили пробел, выбрали нужный метод для переопределения и нажали энтер. И тут же будет создана вот такая конструкция:
Код AS3:
override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
	super.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
А при наборе кода совсем не обязательно соблюдать отступы между операторами и прочим. Все потому, что после нажатия энтера или постановки «;» весь код отформатируется в читабельный вид сам. Потрясающе, не правда ли? Это я еще не все рассказал. Дальше – больше.

Если вы решили работать в связке FD + FlashIDE, то у вас не должно быть, по идее, ни одного as-файла в проекте, созданного автоматически. Это легко исправить через правый клик по нужной папке на панели Project и первый пункт Add. Вывалится список всего, что можно создать (а в каждом типе файла еще и своя подсветка кода и свой автокомплит!), выбираем New Class. Покажется окно визарда, где нужно ввести название класса и можно указать пакет, от чего мы расширяемся, интерфейс и еще много чего полезного. Все, создается пустой шаблон класса вот примерно такого вида:
Код AS3:
package  
{
	import flash.display.Sprite;
 
	/**
	 * ...
	 * @author KorDum
	 */
	public class NewClass extends Sprite 
	{
 
		public function NewClass() 
		{
 
		}
 
	}
 
}
Сам я жутко не люблю, когда операторные скобки переносят на новую строку, поэтому обычно мои шаблоны выглядят иначе и так, как нужно мне. О шаблонах писал PsychoTiger, но я тоже в будущем немного освещу эту тему с указанием ссылок на похожие статьи. Также iNils написал кое-что по этой теме в комментариях.
Для решивших компилировать через FlexSDK картина должна быть похожей и должна быть создана сразу же автоматически, как создали проект. Собственно, насчет новых файлов и шаблонов пока все.

Продолжу разговор о приятностях. Комментарии. Вот еще один плюс редактора. Когда разрабатываешь свой фреймворк или вообще в классе нужно понаписать комментариев перед методами – тут FD на высоте. А попробуйте создать любой метод с совершенно любыми параметрами, причем метод еще и что-то возвращает. Написали? А теперь перед методом поставьте «/**», без кавычек, конечно же. Появится автокомплитовое окошко, где нужно выбрать Method details. Энтер даст примерно следующее:
Код AS3:
/**
 * 
 * @param	param1
 * @param	param2
 * @return
 */
private function foo(param1:int, param2:int):int {			
}
Еще и заботливо поставит курсор в нужное место комментария. Быстрая документация в коде, удобно же! Можно поставить и обычный комментарий, без дополнительных штучек – выбрать, соответственно, нужно не Method details, а Empty.

Продолжаем обзор. Горячие клавиши. Всех я, конечно же, не знаю, но пользуюсь следующими:
Ctrl + T (транспонирование) меняет текущую строчку с верхней местами. Может показаться, что ненужное, ан нет, со временем поймете, что эта комбинация очень даже нужная и полезная
Ctrl + D дублирует текущую строчку, или часть строки, или целый блок
Ctrl + H / Ctrl + F ну, классика же, заменить/найти
Ctrl + I - поиск и замена по всему проекту
Ctrl + Alt + Space показывает список доступных классов для вставки в код. Я первое время недоумевал, зачем такая сложная комбинация для такого полезного и достаточно частого действия. Но со временем то ли привык к ней, то ли и правда удобно стало, но переназначать на другие клавиши мне уже не хочется
Ctrl + Space покажет список доступных методов/свойств
Ctrl + Shift + Space высветит подсказку у аргумента метода, если такая в данный момент доступна.
F4 позволит перейти к нужному месту в коде этого же или другого. Очень удобно, если нужно посмотреть, что это за метод или не идут ли перед методом какие-то поясняющие комментарии
Shift + F4 вернет нас обратно после перехода по F4
Ctrl + Q закомментирует или раскомментирует выбранный блок "//"
Ctrl + Shift + Q закомментирует или раскомментирует выбранный блок многострочными "/* */"
Ctrl + Shift + 1 автогенерация кода, исходя из текущего контекста

Ну вот я вроде бы все основное поверхностно осветил. Теперь уже можно начать писать код и компилировать приложения (через Ctrl + Enter, кстати). Все, сейчас статья подошла к концу, а я пока пойду обдумывать содержание следующей статьи. И да, конечно же, помощи в доработке/корректировке всегда рад.
Размещено в FlashDevelop
Комментарии 31 Отправить другу ссылку на эту запись
Всего комментариев 31

Комментарии

Старый 18.12.2010 03:25 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
Цитата:
Сообщение от КорДум
Сам я жутко не люблю, когда операторные скобки переносят на новую строку,
Адобе негодует
Код AS3:
//Align the braces of statement blocks.
 
//Do this:
 
function f():void
{
    var n:int = numChildren;
    for (var i:int = 0; i < n; i++)
    {
        if ()
        {
            x = horizontalGap * i;
            y = verticalGap * i;
        }
    }
}
 
//Not this:
 
function f():void {
    var n:int = numChildren;
    for (var i:int = 0; i < n; i++) {
        if () {
            x = horizontalGap * i;
            y = verticalGap * i;
        }
    }
}
А вообще найс статьи)) где они были пару месяцев назад
Старый 18.12.2010 03:26 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
И плевать как-то ( я про скобки ).
Старый 18.12.2010 10:04 КорДум вне форума
КорДум
 
Аватар для КорДум
Да уж, читал я. Ну первый вариант же ужасен и занимает больше места.
Цитата:
где они были пару месяцев назад
Они были рассредоточены по всему форуму в виде отдельных постов )
Старый 18.12.2010 10:40 zuxul вне форума
zuxul
Цитата:
Сообщение от КорДум
Сам я жутко не люблю, когда операторные скобки переносят на новую строку
Это настраивается "Programm Settings -> Main (FlashDevelop) -> Coding Style Type", и классы создаются с этими предпочтениями.
Старый 18.12.2010 10:52 КорДум вне форума
КорДум
 
Аватар для КорДум
Я знаю. Оставил для статьи про шаблоновый стиль.
Старый 18.12.2010 11:33 udaaff вне форума
udaaff
Хороший комментарий по поводу скобок был на ruFlash http://groups.google.com/group/rufla...c3a5e656403adb
Самому тоже не нравится, когда тело функции с сигнатурой склеивается.
Старый 18.12.2010 14:10 КорДум вне форума
КорДум
 
Аватар для КорДум
udaaff, в вопросах оформления каждый будет поддерживаться той точки зрения, которая по его мнению самая удобная. Я оставляю "{" на той же строчке, где и объявление метода, а тело отделяю табуляцией. По мне так это очень даже удобно. Но каждому ведь свое. Можно и массив массивов записывать одной строчкой:
Код AS3:
arrNumbers = [ [1, 2], [1, 2] ];
а можно и вот так:
Код AS3:
arrNumbers = [
	[1, 2],
	[1, 2]
];
или даже так:
Код AS3:
arrNumbers = 
[
	[1, 2],
	[1, 2]
];
кому как удобнее, мне приятнее видеть второй вариант, если такое форматирование требуется на самом деле и первый в остальных случаях. Единственное, чего следует придерживаться всем - читабельности с соблюдением лесенки, чтобы не было ощущения, будто в код попала осколочная граната, разорвав его на части.
Старый 18.12.2010 14:37 udaaff вне форума
udaaff
Речь я завёл не про чьё-либо имхо всё-таки.
Как вам удобнее так и пишите, я ж ничего не имею против.
Старый 18.12.2010 14:40 КорДум вне форума
КорДум
 
Аватар для КорДум
Не-не, я и не оспариваю ничего, скорее, пресекаю последующие холиварные комментарии, что могут последовать от других пользователей.
Старый 19.12.2010 00:25 Котяра вне форума
Котяра
 
Аватар для Котяра
Для меня плюс
Код AS3:
 function do(){
в том , что при сворачивании по плюсику сворачивается до функции. Все. В остальном пофик. Это не самое главное.
главное что не так:
Код AS3:
function f():void {
var n:int = numChildren;
    for (var i:int = 0; i < n; i++) {
 if () {
x = horizontalGap * i;
            y = verticalGap * i;
}
    }
}
Обновил(-а) Котяра 19.12.2010 в 00:27
Старый 19.12.2010 00:45 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
Цитата:
Сообщение от Котяра
в том , что при сворачивании по плюсику сворачивается до функции. Все.
Ну смотря как это самое сворачивание юзать. Для экономии места конечно да. Но в ФД допустим с редактированием свернутых блоков проблемы есть. И гораздо валиднее он скопирует/драгендропнет/ваш_вариант когда в свернутом виде выглядит вот так:
func do():void
{
}

нежели:
func do():void {

К тому же в первом варианте можно тыцнуть ентер сразу после первой скобки и попадем в функцию(ну или иной блок типа if(){} или switch(){}). Или же если сразу после второй, то очевидно поставится перенос строки после функции. А со вторым вариантом у меня этот ентер как-то рандомно ставится. Не вник в систему ФД.
Старый 19.12.2010 00:48 КорДум вне форума
КорДум
 
Аватар для КорДум
В FD после { в любом случае будет создана закрывающая скобка, а курсор установится на тело блока. Во всяком случае, у меня это работает в обоих вариантах написания.
Старый 19.12.2010 02:26 Котяра вне форума
Котяра
 
Аватар для Котяра
Ребята! Не о том спорим. Есть вещи поважнее.
Старый 19.12.2010 14:13 iNils вне форума
iNils
 
Аватар для iNils
Стоит добавить, что после F4, можно вернуться обратно с помощью Shift+F4
Кроме того, Ctrl + D давно уже не просто дублирует строку, но и дублирует только выделенную часть строки или строк.

По поводу переноса { на новую строку. Я сам жутко не люблю такой код и читать мне его трудно, но раз кому то так удобно, то пусть использует. Но как быть мне? Поскольку полноценного плагина форматирования я не видел, то написал себе небольшой макрос для FD, который слегка причесывает чужой код.
Код:
using System;
using PluginCore;
using System.Text.RegularExpressions;

public class LiteFormat {
	public static void Execute () {
		ScintillaNet.ScintillaControl sci = PluginBase.MainForm.CurrentDocument.SciControl;
		if (sci == null) {
			/// document not editable
			return;
		}
		/// WARNING: reading/writing sci.Text property is slow
		string src = sci.Text;
		
		/// 4 пробела в табуляцию
		src = new Regex (@"(?<=\r\n|\t|(    ))(    )").Replace (src, "	");
		
		/// Удаляем пустые строки
		src = new Regex (@"\r\n([\t ]+)?\r\n").Replace (src, "\r\n");
		
		/// Переносим {, стоящие в начале строки, на строку выше и в конец
		src = new Regex (@"( +)?\r\n(\t+)?{").Replace (src, " {");
		
		/// Переносим catch, else и finally, стоящие в начале строки, на строку выше после {
		src = new Regex (@"}\r\n([\t ]+)?(catch|else|finally)").Replace (src, "} $2");
		
		/// Убираем табуляцию по краям else и finally, стоящих между }{
		src = new Regex (@"}([\t ]*)(else|finally)([\t ]*){").Replace (src, "} $2 {");
		
		/// Добавляем пробел между словом и (. Для функций, for, if и тп.
		src = new Regex (@"([\w\d$])\(").Replace (src, "$1 (");
		
		sci.Text = src;
	}
}
Макрос на C#. Чтобы его прикрутить к FD, нужно сохранить данный код в папку Macros в папке с FD, у меня он имеет имя LiteFormat.cs
Далее зайти в меню Macros > Edit Macros или Ctrl+F10, добавить новый макрос, дать ему имя (label), а в Entries написать
Код:
ExecuteScript|Development;$(BaseDir)\Macros\LiteFormat.cs
Добавить шоткат (у меня Ctrl+0) и готово (возможно нужно будет перегрузить FD, чтобы шоткат заработал).
Старый 19.12.2010 16:33 КорДум вне форума
КорДум
 
Аватар для КорДум
Сейчас допишу хоткей в статью. iNils, есть возможность указать ссылку на ваш комментарий про макрос?
Старый 19.12.2010 16:45 iNils вне форума
iNils
 
Аватар для iNils
В отдельное окно? Вряд ли, по крайне мере я не нашел как. Но можно указать на комментарий, чтобы до него прокрутилось (при условии, что он не в самом низу страницы)
Вид такой http://www.flasher.ru/forum/blog.php?bt=номер
Номер можно узнать, наведя на значок редактирование или пожаловаться, и посмотреть в адресной строке, мой был 2874.
http://www.flasher.ru/forum/blog.php?bt=2874
Обновил(-а) iNils 19.12.2010 в 16:47
Старый 19.12.2010 17:36 easy.proger вне форума
easy.proger
Старый 19.12.2010 19:28 КорДум вне форума
КорДум
 
Аватар для КорДум
Во, спасибо.
Старый 21.12.2010 00:25 Mur4ik вне форума
Mur4ik
В FD4 уже будет встроенный инструмент для форматирования кода.
Настраивайте его как угодно и одним шоткатом приводите в "нормальный вид" исходники.

Для FD3 тот же плагин можно доставить отдельно, и работает он достаточно хорошо, единственное что настройки там коряво сделаны, многое нужно методом тыка подбирать.
Старый 21.12.2010 00:30 Mur4ik вне форума
Mur4ik
Или я не заметил или упустили один самых важных шоткатов Ctrl+Shift+1 - автогенерация кода исходя из текущего контекста.
Старый 21.12.2010 01:56 Nemez вне форума
Nemez
 
Аватар для Nemez
А дальше?
Особенно интересна структура проекта, куда складывать XML и откуда брать готовый SWF.
Старый 21.12.2010 02:20 iNils вне форума
iNils
 
Аватар для iNils
Цитата:
Особенно интересна структура проекта, куда складывать XML и откуда брать готовый SWF.
В стандартных проектах, готовый swf генерится в папку bin.
Какой xml? Который грузите в swf? Куда хотите, туда и кладите. Я все данные на момент разработки храню в /bin/data/
Старый 21.12.2010 02:50 Mur4ik вне форума
Mur4ik
Ctrl + Q и Ctrl + Shift + Q еще и раскомменируют блоки кода, т.е. работают двунаправленно.
При чем если комментарий многострочный, не обязательно выделять его целяком чтоб раскомментировать, достаточно каретки внутри блока.
Старый 28.12.2010 14:06 NumpuT вне форума
NumpuT
Плохо что трассировать нельзя, столько горячих клавиш а самых нужных нету!!!
Старый 28.12.2010 14:19 -De- вне форума
-De-
 
Аватар для -De-
Трассировать можно, но студиевское step over когда повесил на ф10 начало какую-то фигню вызывать, наверное ф10 - плохой выбор %)
Старый 28.12.2010 14:22 NumpuT вне форума
NumpuT
А тут оказывается можно назначать самому горячие клавиши!!!
Во как прикольно!
Старый 28.12.2010 14:42 iNils вне форума
iNils
 
Аватар для iNils
Цитата:
Трассировать можно, но студиевское step over когда повесил на ф10 начало какую-то фигню вызывать, наверное ф10 - плохой выбор %)
F10 в FD вызывает панель настроек.
Старый 28.12.2010 15:16 alatar вне форума
alatar
 
Аватар для alatar
Цитата:
А тут оказывается можно назначать самому горячие клавиши!!!
Во как прикольно!
А где их нельзя назначить?
Старый 28.12.2010 19:13 NumpuT вне форума
NumpuT
Да походу во многих приложениях можно настроить, я чего-то не обращал внимания быстро запоминаю по умолчанию, а вообще хорошая идея, а то бывает путаешь F9 c F11 c F5 и F10)
Старый 10.01.2011 23:22 КорДум вне форума
КорДум
 
Аватар для КорДум
Mur4ik, спасибо, я добавил.
Еще говорим, не стесняемся. Было бы неплохо иметь все тут и сразу.
Старый 11.01.2011 00:55 Котяра вне форума
Котяра
 
Аватар для Котяра
Очень хороший плагин Trace
при установке фд на новую машину, первым делом его ставлю.
А вообще вот список плагинов: http://www.flashdevelop.org/wikidocs..._Party_Plugins
 

 


Часовой пояс GMT +4, время: 15:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.