пятница, августа 31, 2007

Проблема с установщиками

Столкнулся с интересными граблями:

Есть установщик (есть также и возвращатель):
public function set display_position(value:TPoint):void {
this._display.x=value.x;
this._display.y=value.y;
}


при вызове
this.display_position=new TPoint(x,y);
он отрабатывает,

но при вызове
this.display_position.x=x;
this.display_position.y=y;
он не сработает никогда! Просто здесь работает возращатель...

Заметки по стилю программирования

Методы для внешнего интерфейса - public
Методы для интерфеса с потомками - protected
Методы внутреннего пользования, обработчики событий - private

четверг, августа 30, 2007

Класс с кодами клавиш

Это класс flash.ui.Keyboard.

FlexBuilder. Как быстро добавить Import для класса в тексте кода

Поставить курсор на конец имени класса, нажать Ctrl+Space и затем ввод. Если в списке только один возможный класс, ввод нажимать даже не потребуется.

Замечание по конструкторам

При инстанцировании классов нужно следовать одному из правил:
  • Свойства класса задаются через параметры конструктора.
  • Свойства класса задаются через установщики уже после вызова конструктора.
Иначе начинается путаница. Если в конструкторе что-то инициализируется, и использует при этом другие свойства класса, которые задаются установщиком, то есть риск, что эти свойства еще не установлены.

Первый способ удобнее, т.к. позволяет создать объект одной строкой.
Второй способ нагляднее и позволит определить последовательность инициализации свойств так, как удобно клиенту (объект, инстанцирующий наш класс).

Есть ли смысл делать установщики для свойств, которые инициализируются один раз в конструкторе? Наверное нет.

В общем, надо строго разделять свойства по частоте обращения к ним извне.

Изменения и дополнения к стилю программирования

Было:
  • public свойства класса и переменные не имеют заглавных букв и слова разделяются "_".
  • private свойства имеют префикс "__".
Добавилось:
  • protected свойства имеют префикс "_".

Все обработчики событий имеют префикс "on".

среда, августа 29, 2007

Flex Builder. Заметки на разные темы

С увеличением числа классов, становится неудобно переключаться по табам окон. Удобнее выбирать в окне Navigation.

Иногда удивляет забота система проверки ошибок: соображает что надо ругаться когда в конструкторе есть параметр, а super с этим параметром я не вызвал. Обязательный параметр - еще б не ругался.

Хорошо проектировать структуру классов на MS Visio, используя Software > UML Model Diagram (US Units). С (Metric) не получилось повернуть документ в альбомное положение.

Создал объектную структуру используя в основном UML Static Structure. С именами классов, методами и свойствами не стал заморачиваться. Хотя, по идее, можно вообще всё сразу спроектировать, но я еще до такой крутизны не дорос.

Хорошо придерживаться принципа - семейства классов, которые наследуются от абстрактного класса определять в отдельный Pacage, вложенный в основной.

Можно загрузить SWF и иметь доступ к клипам, размещенным в нем. Для этого привести Loader.content к DisplayObjectContainer и пройти в цикле используя getChildAt.

Ключевое слово super - в теле конструктора вызывает конструктор предка. Если в конструкторе явно не вызывать super(); то конструктор предка будет выполнен до первого оператора в теле конструктора. Это может быть полезно для выполнения каких-либо действий до вызова конструктора предка.
В остальных методах класса, super позволяет вызывать версии методов предка - super.parentMethod();

Contrl+Shift+D - вставляет блок комментариев. Если курсор над функцией, добавляет спец-параметры @return, @param.

Shift+F2 - Eclipse SDK Help - удобно быстро вызывать подсказку для любого слова на котором стоит курсор.

вторник, августа 28, 2007

Пробуем Adobe AIR update Beta 1 для Flash CS3

Вдохновившись статьей на флэш-риппере, ломимся на labs.adobe.
Качаем: Adobe AIR update for Flash CS3 Professional for Windows (13 MB) .
Заодно качаем Download the Adobe AIR Installer.

Устанавливаем. Предлагает закрыть IE и Flash CS3. Сволочь. Закрыли, установили.
Запускаем flash. В Welcome Screen появился новый пункт насчет AIR, и при его выборе создался новый проект. В его Publish Settings > Flash > Version теперь есть пункт Adobe Air 1.0 и он сейчас выбран.

К сожалению, такого выбора AIR-проекта не предоставили в New Project. Но, думаю, это не важно, т.к. в настройках проекта мы всегда можем установить нужную версию. Появились две новые команды в меню Commands.

При компиляции файла, в том же каталоге появился одноименный SWF-файлу XML.
Команда AIR Application & Installer Settings открывает окно с настройками AIR-пакета. Здесь мы нажмем кнопочку Package. Теперь у нас есть AIR-пакет. Запустим его. Предлагается установить наше приложение. Всё красиво и культурно. Установили и запустили - всё работает!

Команда Package AIR File также создает AIR-пакет.

пятница, августа 24, 2007

Продолжаем изучать FlexBuilder 3

Знакомиться с Flex, будем по документации, публикуемой здесь нашими уважаемыми передовиками Flash-производства.
Статья о введении во Flex Builder 2 дает общее понятие о Flex.

четверг, августа 23, 2007

Создание компонента во Flash CS3 IDE

Создаем новый Fla для AS3.
Добавляем компонент Flex Component Kit - про него вкратце я писал здесь. Создаем символ "_name_". Вызываем команду Make Flex Component. Получаем в Output: "Component "_name_" is ready to be used in Flex." В свойствах Linkage символа произошли изменения - символ предназначен для экспорта в ActionScript. В свойствах публикации отмечаем Export SWС. Публикуем.
Добавляем в свойствах проекта ActionScript Build Path > Library path > Add SWC наш компонент. Теперь в коде можно использовать класс нашего символа "_name_".

Возникла проблема с обновлением компонента. Если просто его скопировать поверх старого, при компиляции Flex - проекта ничего не изменится. Если файл компонента "перетащить" в папку проекта в окне Flex, компонент успешно обновляется.

Заметки по работе с проектом во Flex

Проекты отображаются в окне "Navigator". При закрытии, проекты не исчезают, а сворачиваются в папочки. При удалении, предлагается сохранить содержимое проекта или удалить его с диска.

Создавая папку в проекте, она создается на диске в папке проекта. После перетаскивания файлов в папки проекта, файлы копируются.

Организация проектов порой не радует. При удалении проекта с удалением файлов, Flex удаляет вообще все файлы в одноименной папке. Ужас. Для того, чтобы открыть существующий AS проект, надо создать новый проект с тем же именем, однако все настройки удалятся.

Не получается все файлы проекта хранить в одной папке: файлы, не относящиеся к Flex-разработке, нежелательно хранить в папке Flex-проекта - появляется предупреждение о том, что папки с источниками являются вложенными в папку Flex-проекта. А WorkSpace подразумевает, что в нем находятся только Flex-проекты. Можно, конечно использовать разные WorkSpace. По-видимому, придется разделять место размещение Flex-проектов и исходных материалов для Flex-разработки. Вопрос где лучше - в пределах WorkSpace или где-то в другой директории.

Каждый Workspace имеет свою конфигурацию. Например, набор проектов, перспектива, настройки интерфейса, snippet-ы и др.

В Eclipse есть понятие Perspective - конфигурация интерфейса, соответствующая определенному виду разработки. В частности - перспектива Flex Development.

Eclipse добавляет инструменты, которых нет в Flex Builder. Например, это быстрая вставка шаблонов кода Snippets.

Полезно использовать Tasks (напоминания) и Bookmarks (закладки).
Интересная команда - Source > Organize imports - убирает лишние импорты. Но не добавляет требуемых. Требуемые добавляются при выборе соответствующего класса из списка подсказки.
Тут же - команда Refactor - Позволяет заменить имя переменной или функции по всему коду. Еще - вставка разнокалиберных комментариев.

среда, августа 22, 2007

Установка Flex Builder 3 и его плагин под Eclipse

Ставлю Flex Builder Plugin под Eclipse.
Запускаем инсталлятор. Единственное что смутило - спросил установить дебаг-версии плагинов FlashPlayer 9, а я только сегодня поставил свежие версии. Интересно, они поверх встали?.. (Да, поверх.)
Всё установилось. Спрашивает, хочу ли я прочитать инструкции по установке расширений Coldfusion для Flex Builder 2 (почему то 2). Смотрим. ColdFusion MX 7.0.2 у меня не установленно, так что не вижу смысла читать дальше. Запомним на будущее они лежат здесь: C:\Program Files\Adobe\Flex Builder 3 Plug-in\ColdFusion Extensions for Flex Builder\Installing the ColdFusion Extensions for Flex Builder Moxie.htm
Запускаю из меню Пуск. Спрашивает где будет папка для workspace. Создаю, указываю.

Окошко Welcome весьма привлекательно.
Создаем новый проект - выбрал Flex project. Даю название, тип сервера - никакой. Версия Flex SDK - по умолчанию Flex Moxie M2. Можно задать еще ряд параметров. Оставим пока всё как есть. Таак. началось. Спрашивает серийный номер... Интересненько. Нажал Purchase, на что после нескольких ошибок в дисководе F, выкинуло на сайт. Странно, что никаких намеков на Flex там нет. По-видимому заглушка на будущее. Ладно. Тогда "Try". Ну вот, собственно мы видим наш Flex Development.

Ладно, закрываем пока. На месте нашего проекта создалось множество файлов и папок, причем, проект уже скомпилировался и появились несколько версий SWF.

Попробуем-ка теперь установить Flex Builder таким как он есть.

Запускаем. Инсталлятор задает все аналогичные вопросы. В итоге получаем всё то же самое, внешнее различие незначительно – заключается в дизайне виджетов и расположении иконок. Позже обнаруживаются и другие различия.
Сравниваю. Пока склоняюсь к дальнейшей работе на Eclipse.

Беру пример из движка Fisix, выбираю New ActionScript Project. Добавляю размещение SWC в разделе Project > Properties > ActionScript Build Path > Library path > Add SWC,
копирую в корень проекта файл AS-кода, ставлю Set As Default Application.
Наше приложение отлично работает. Даже работает trace в окне Console.

Подсказки работают (принудительно - Ctrl+Space). Работают адекватно только если файл открыт в рамках проекта. Help работает превосходно.
С нормальной подсветкой пока глухо. Попробуем поискать плагины.

вторник, августа 21, 2007

Flex Builder 3.0, Eclipse

Сегодня скачал Flex Builder 3.0 и Flex Builder Plugin для Eclipse с labs.adobe.com. Пусть будут. Разберемся что лучше. Тем и будем пользоваться.

Кстати, качаем последний релиз Eclipse. На сайте, в разделе Downloads предлагается несколько вариантов этой платформы, заточенных под разные направления программирования.
Интересно - с OSFlash идет ссылка на другой раздел. Ага. OSFlash нас призывает пользоваться Web Tools Platform. Точно - в разделе Downloads справа в меню есть такая ссылка. Слева тоже есть просмотр всех проектов By project, в котором находим WST - Web Standards Tools. А вот здесь новости проекта.

Ну всё. Качаем отсюда. Качаем wtp-all-in-one-sdk-win32 - всё в одном. Итальянский линк качается лучше. Запускаем. Впечатлило! Но ничего не понятно. Пока. Для начала поставим под это дело Flex. Но это в следующей серии.

пятница, августа 17, 2007

FlashDevelop. Plugins

Как только начинаем работать в редакторе, сразу испытывается дискомфорт из-за отсутствия под рукой Help-а и быстрого перехода на интересующую нас статью прямо из редактора. Кстати, при нажатии F1, открывается Google со строкой поиска, содержащей выделенное слово. Причем, если IE уже открыт, то откроется прямо в нем. Нас это, конечно же не устраивает.
Попробуем решить эту проблему использованием плагинов (если таковые имеются). Смотрим официальный сайт. В разделе Plugins находим HelpPanel Plugin Releases [1.4 Beta]. Качаем Download Beta Release последнюю версию. Разархивируем, читаем readme.txt. Надо скопировать две DLL-ки в каталог с плагинами. Копирую "FlashDevelop\FirstRun\Plugins". Запускаю FlashDevelop. Сразу ошибка "Unable to load one or more of the requested types..." Так. Пробуем предыдущую версию, которая не beta. Тот же результат. Пока ясно одно - плагин для 2-й не работает под 3-й версией.

Ну точно. Последняя (на сегодня) фраза в этой теме: "I suppose I need to work on my rusty c# skills again so that I can update the help plugin for FD3 soon". Это всё объясняет.

Судя по всему, других новых плагинов пока еще тоже нет.
Увы, ждем появления и закрываем тему с плагинами.

Есть еще вариант более удобного просмотра Help:

Вызываем On-line Documentation

Открывается окно броузера новой закладкой прямо в редакторе.

В адресную строку вводим адрес документации: http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/js/html/wwhelp.htm.
Затем можно было бы переместить окошко на нужное место и сохранить в Layouts полученную конфигурацию окон. Но при старте программы или активации Layout, окно не выводится.

Итак. Сделать более удобный доступ к Help мы не смогли. Это большой минус, который, возможно, будет скоро исправлен.

среда, августа 15, 2007

FlashDevelop. Первые впечатления

Теперь попробуем редактор в действии.
Для начала, я взял пример с роботом из архива APE alpha 0.45.
Создаем новый проект: Project > New Project > ActionScript 3 - Default Project. Здесь мы даем название проекту и указываем где будет располагаться рабочий каталог.
После создания проекта, в указанном каталоге появились подкаталоги bin, classes, library. В каталоге classes появился файл Main.as, в котором описывается пустой класс "Main".
Внимание! Программа выдает сообщение, что в каталоге есть файлы. Если там уже есть файл Main.as, что бы в нем не было, он будет заменен на файл пустого класса (и я на это попался).

Итак, справа в закладке "Project" отображаются все рабочие файлы проекта. Удаляем Main.as и отмечаем для RobotDemo.as во всплывающем меню "Always Compile". Таким образом, этот файл при компиляции будет основным. Имя результирующего SWF, по команде "Test movie" и "Build Project" будет соответствовать названию проекта.

В свойствах проекта множество настроек. Понравилась возможность указывать командные строки до и после компиляции. Рекомендую сразу установить "Open SWF in" = "External", чтобы "Test movie" открывалось в проигрывателе а не новой закладкой в основном окне редактора.

Немного поигрался настройками робота и довел его до полной самодеструкции на первых же секундах движения.

Впечатления по редактору. Чувствую себя комфортно. Решил бросить свой старый устоявшийся еще с турбо-паскаля стиль программирования (точнее форматирования) и перейти на стандартный. Здесь в этом есть смысл - табуляции отображаются пунктирной линией, что четко отражает структуру кода.
Автоподстановка работает прекрасно, ловко предугадывая, где надо предложить варианты. И делает это без "фанатизма", если в ее услугах не нуждаются. Сама подстанавливает при необходимости директивы "Import Имя класса" над описанием класса. Кроме того, автоподстановка хватает на лету только что созданные классы, их методы и свойства.
Важно - комментируя методы использовать ключевые слова"@param", "@private". Тогда автоподстановка станет еще умнее.


Сервисных возможностей много, но не скажу, что их очень много. Может быть это только на первый взгляд.

Очень понравилась система "Snippet" - вставки шаблонов кода.
Если зайти в "C:\Program Files\FlashDevelop\FirstRun\Snippets\as3\", там лежит набор стандартных шаблонов. Я тут же забил туда кучу новых шаблонов и вскоре успешно ими воспользовался. В шаблонах предусмотренны ключевые слова типа $(EntryPoint). Список всех ключевых слов здесь. Нажимаем Ctrl+B и пишем что-либо. В появившемся списке отбираются названия (или имена файлов) шаблонов, содержащих это что-либо. Выбираем нужный шаблон и ... получаем нужный фрагмент кода.
Таким образом, мы здорово облегчаем себе жизнь и ускоряем рабочий процесс.

Пока не совсем всё понятно с отладкой. Я нашел только trace и это возможно так:
  • Используем fscommand("trace", message);
  • Используем методы классов из "C:\Program Files\FlashDevelop\FirstRun\Library\AS3\classes\org\flashdevelop\utils\" - FlashConnect, FlashViewer, TraceLevel.

Завтра будем пробовать плагины для FlashDevelop.

Устанавливаем редактор FlashDevelop

Найти FlashDevelop можно здесь: http://www.flashdevelop.org/community/
Сайт производителя не впечатлил. По-видимому, разработчик не стал заморачиваться и с главной страницы сразу перекидывает редиректом на форум. Здесь, собственно, можно и скачать, прочитать новости и тут же всё это обсудить. Такой аскетизм свойственен Open Source.

Смотрим последний релиз: FlashDevelop 3.0.0 Beta2 released.
Качаем, устанавливаем. Не устанавливается. Ах да! Забыли поставить .NET framework.
Качаем Microsoft .NET 1.1 SP1 framework. Теперь установилось.
И вообще, почитаем-ка что тут пишут. Многообещающие списки нововведений радуют глаз. Просят материальной помощи. Ага, еще надо качнуть Download Adobe Flex 2 SDK и рекомендуют Download Adobe Flex Compiler SHell.
Долго копал как задействовать эти приблуды. Оказалось, Flex 2 SDK надо просто развернуть в любой каталог, и Flex Compiler Shell в него же. Затем зайти в Tools > Installed Plugins > AS3 Context > Settings > Flex 2 SDK Location и прописать здесь полный путь к этому каталогу.
Позже после множества бесплодных попыток скомпилировать что-нибудь, выяснилось что нужна еще и JRE (Java Runtime Environment). Я качнул ее отсюда: Java Runtime Environment Download from Sun Microsystems. Википедия в этом здорово помогла.

Итак, забегая вперед, .AS-скрипты успешно компилятся средствами Flex 2 SDK.
К сожалению, не могу подробно изложить весь процесс освоения установки этого продукта со всеми его ошибками и непонятками. Это было не сегодня. Сегодня я просто поставил всё выше перечисленное на свой домашний ноут, и всё прилежно заработало.

PS: И главное все впаривают Гугловскую панель поиска! Паразитов всяких разводить.

вторник, августа 14, 2007

Выбор среды разработки. Продолжение

Порыл Flasher.ru на предмет кто чем пользуется. Мнений много. Кто-то даже не брезгует в блокноте писать.

Варианты такие:

  • Eclipse + плагины FDT или ASDT + компилятор MTASC (на сколько я понял, это не более AS2).
  • FlashDevelop (все версии, в том числе AS3).
  • FlexBuilder (AS3).
  • Sepy Action Script Editor (AS2).
  • Другие, реже используемые варианты.
Flash CS3 для рисования анимации остается как он есть. Других вариантов получше пока не видел.

Для поисков использовал в основном http://www.fasher.ru/, http://www.osflash.org/.

Я решил остановиться на редакторе FlashDevelop. Получить возможность работать сразу с двумя версиями ActionScript - это как раз для меня.

Flexbuilder сейчас существует во 2й версии, 3я уже есть, но это Alpha. Не буду торопиться. До Flex у меня еще руки дойдут. А к тому времени как раз релиз 3й версии подоспеет.

Остальные варианты еще не актуальны в рамках моей задачи, кроме того, FDT, говорят, платная, что совсем неподходит. Несмотря на это, я все же попробую установить и попробовать эти программы в действии.

Итак, моя задача - найти редактор для работы с AS3 - решена.
Далее установим и разберем поподробнее этот редактор.

понедельник, августа 13, 2007

Выбор среды разработки

Всегда придерживался правила - работать в одной программе. Меньше нажатий Alt+Tab, меньше путаницы, проблем с установками, переустановками, настройками и т.д. Среда разработки Flash IDE была всегда самодостаточна и довольно удобна. При нормальном конфигурировании и компоновке окон, она становится вполне пригодной для повседневного поьзования. Нажал на красный ярлычок - и ты сразу в работе. Автоподстановка работает сносно, хелп тут же, под боком - на левом мониторе. Ручками писать имена операторов и функций конечно не все любят, а вспоминать у кого какие названия и параметры тоже лишняя трата времени. Зато пальцы и память тренируются... А время порыть хелп есть всегда - программисты народ уважаемый, сказал завтра, значит завтра. Хелп рыть - полезное занятие: повторение - мать учения.
И всё бы так и продолжалось, если бы не одна неприятность. Когда я установил Flash CS3, расставил все окошки в своем годами отработанном порядке и начал работать, меня постигло разочарование. Обычно у меня открыты пара-тройка .FLA документов и десяток .AS. Так вот, процесс переключения с одного документа на другой порой занимал до четверти минуты! Все окошки по три раза обновлялись и передергивались. Смотреть на это было настоящей пыткой. Мысль ускользала, нервы портились и хотелось взять клавиатуру и раздолбать ее о монитор... Странно, но при переключении с .FLA на .FLA всё терпимо. С .AS на.AS, .FLA на .AS и наоборот - тупо смотрим в экран.
Возможно, это бага первых версий и она будет со временем устранена. Но, увы, авторитет подорван. Назад дороги нет. Ищем альтернативу. Завтра (точнее сегодня) мы ее непременно найдем.

воскресенье, августа 12, 2007

Начало

Сегодня тот день, когда я решился создать свой собственный блог!

Зачем мне это надо? Просто настал момент, когда моя деятельность будет интересна не только мне, но и другим flash-разработчикам. По крайней мере, я это планирую.

Я достаточно поработал на ActionScript 2, но теперь пришло время ActionScript 3. И я собираюсь пополнить свой профессиональный багаж. Начинаю осваивать 3-ю версию нашего великого и могучего...

Возможно, "гуру" флэша сейчас снисходительно улыбнутся, продвинутые флэшеры поморщат лоб, а рядовые бойцы немного заскучают... Для меня конечно очень важно, чтобы все мои коллеги в этот момент не щелкнули на крестик в правом верхнем углу или не нажали Back на тулбаре броузера. Я надеюсь на вашу помощь и поддержку. Возможно и у меня будет чему поучиться.

В любом случае, материалы, которые я буду здесь публиковать будут полезны в первую очередь мне. По крайней мере, больше не надо будет рыться в книгах, старых исходниках и каше "избранного".

Итак, этот блог посвящается в первую очередь: изучению ActionScript 3, далее, всему что связано с Flash-технологиями и наконец, интересным событиям и новостям по той же теме. Возможно, будут дублироваться новости с других сайтов - это ни в коем случае "не корысти ради" - обязательно поставлю ссылку откуда взял и оставлю свое мнение.

PS: Блоггер начал радовать с первых минут. Удивительно удобная система. Большой респект!