27
Апр
9

Realaxy. Первые впечатления. Hands on review.

Первые впечатления… тут пожалуй подойдет такая метафора: прогулка на лыжах по песку.

Впрочем, речь даже не о прогулке, а о попытке сдвинуться с места. Я не буду давать никаких оценок, я просто опишу свой опыт первых часов работы с Realaxy.

Итак, дано:

Пользователь, который не имел дела с flex sdk, не знает ничего о jetbrains кроме самых общих слов. При этом  активно пользуется редактором кода FlashDevelop, и имеет небольшой опыт работы с Flex Builder. Realaxy я попытаюсь использовать просто как редактор Action Script кода.

Ставим Realaxy. Все проходит быстро.

Первый запуск. Узнаем, что имеем дело с триальной версией на 30 дней.

Создаем проект.

Выбираем в меню Action Script проект

realaxy_01

жмем далее, выбираем имя проекта. Ниже идет какая- галочка «Создать модуль».

realaxy_02

Пожимаем плечами, бог его знает, что это, наверное так надо.

realaxy_03

Жмем далее, пишем имя главного класса, ок!

Появляется окошко в котором показывается прогресс создания проекта. Машина на которой производилось тестирование - старье, пентиум 820D. Ждем. Ждем долго. Настолько долго, что я начинаю волноваться… Ок. Спустя каких-то три минуты имеем проект.( Позже выяснилось, что это только первый раз так долго. Потом все быстро грузится)

Открываем в дереве каталогов главный модуль. Вот она революция! Ну наконец-то!

realaxy_041s


Легким нажатием Enter генерим метод, даем ему имя.

Создаем переменную: var txt : String;… String почему-то подсвечено красным… Пробуем еще раз, снова. Не знаю такого типа, дает мне понять программа.

realaxy_05_nostring

Хорошо. А Number ? - Хрен. int? - фигушки.

realaxy_05_num

Что за черт?

UPDATE

В комментах Евгений Потапенко подсказал: чтобы тип переменных или класс стал доступен в проекте его надо импортировать с помощью ctrl+R. В появившемся диалоговом окне пишем имя переменной или класса, после этого она (он) становится доступной.

UPDATE 2

Александр Елисеев: по CTRL+R импортируется не класс, а вся модель (пакет), которая содержит этот класс. Можно также нажать CTRL+M и выбрать в списке именно пакет, классы из которого требуется сделать доступными. Модели из библиотек имеют постфикс @swc_stub после имени пакета, поэтому, например модель дефолтного пакета называется просто @swc_stub.


Пытаюсь написать trace(”Hello world”); редактор не понимает, чего я хочу, подсвечивает красным.

realaxy_05_notrace

Минута молчания.

Создаю новый проект. Та же фигня. Ладно.

Лезу смотреть скринкасты. Делаю как там.

Пишу в строке “Hello world”, ставлю на нее курсор, жму ctrl-alt-V. О боги! Сработало, наконец-то! Все как в сказке - редактор сам создал переменную! Даю ей имя, ура!

realaxy_05_nstring

Выдыхаем. Ну ка – ну ка, а что если мне нужна просто строковая переменная без инициализации. Ок. Создаем шаблон переменной, даем имя пишем тип… var txt2 : String; Что за черт?!

realaxy_05_nostring2

Подсвечено красным! Т. е. то, что редактор создал сам -  его устраивает. А моя прекрасная переменная ему не катит? (Вспомнилось про поддельные елочные игрушки - все у них тоже самое, как у настоящих, но… не радуют!)

Где-то, на пятом по счету, новом проекте я внезапно смог написать trace(txt, …args);  без того, чтобы редактор подсветил это красным.

Компилим swf - ура! Работает.

Только куда trace выводится? Я пока не понял. Не нашел.

UPDATE

Евгений Потапенко: по трейсам - нужно импортировать logger language (ctr+L - “logger”)
и сообщения выводить c помощью trace statement, (не глобальной функцией trace). trace и ctrl+space даст в списке trace statement.
так же доступны debug, error, warn стейтменты.
сообщения выводятся внизу в панеле “messages”.
кликнув на сообщении можно перейти в точку где сообщение было послано.

Автокомплит

Создаем переменную типа MovieClip - отлично, а к примеру TextField - хренушки.

realaxy_06_notextfield

Причем в списке автокомплита значатся только классы из пакета flash.display. А как подключить остальные? Никакой import flash.text; редактор написать не дает, светит краcным. Но ведь библиотеки где-то надо прописать? Точно так же я не смог добавить листенер, причем hasEventListener в списке автокомплита есть, а addEventListener нет.

Беготня по окнам свойств проекта, класса и модуля не дала результата, там и так упомянут playerglobal.swc включающий в себя все пакеты flash, но что толку?

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

UPDATE

В комментах Евгений Потапенко подсказал: чтобы тип переменных или класс стал доступен в проекте его надо импортировать с помощью Сtrl+R. В появившемся диалоговом окне пишем имя переменной или класса, после этого она (он) становится доступной. См. иллюстрацию.

textfield_addition

Сам автокомплит работает… м-м-м иначе, чем во FlashDevelop, где я успеваю написать pr а он уже высвечивает подсказку private, остается только нажать Enter. То есть я пишу, а редактор FlashDevelop дает подсказку сразу. В Realaxy при наборе текста надо нажать Ctrl-пробел или Ctrl+Shift+пробел, и только тогда он показывает окно с подсказкой автокомплита.

Во FlashDevelop если я создал переменную var mc : MovieClip; и потом пишу mc = new , то сразу после new дается подсказка MovieClip, остается нажать Enter. Очевидно, не так ли? Realaxy в такой же ситуации рисует мне красный знак вопроса  mc = new ?. Спрашивается, почему? Ведь вроде бы ясно что я хочу создать новый мувиклип, и первое предположение для автокомплита очевидно - MovieClip.

Realaxy может легко создать метод, или всю конструкцию for (var i:int…  сразу целиком.  Но автокомплит в мелочах пока далек от совершенства.

Realaxy пока ведет себя нестабильно. То все работает как в скринкастах, то, минуту спустя,  редактор начинает дурить… строптивый у него характер, как у необъезженной лошади. Довольно часто можно увидеть это:

realaxy_08_error

Причем после возникновения ошибки и перезагрузки - проект слетает. Окно с кодом открывается пустым, а сам редактор иногда впадает в кому. Пока оказалось проще всего удалить папку с проектом и начать сначала, чем разобраться в том, как это исправить. И примерно с десятого запуска редактора проект генерится пустым, без модуля. То есть в структуре проекта есть только библиотека, а самого package нет. Я пробовал создавать вручную проект и его начинку, но оно не компилится, выдает ошибки.

Вот такая получилась история. Пока работа с Realaxy не является “работой”. Это пока скорее изучение нового подхода, демонстрация новой концепции, можно поиграться, потрогать. А местами это похоже на загадку. Но интересно.

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

Enjoyed reading this post?
Subscribe to the RSS feed and have all new posts delivered straight to you.
9 Comments:
  1. то что не был импортирован дефолтный пакет при создании модуля - это баг.
    к сожалению автоматический импорт классов и моделей не работает.
    нельзя нажать Canvas и контрол+спейс и добавить импорт.
    нужно нажать комбинацию ctrl+R (Add model import by root)
    и добавить String.

  2. Сорри, заговариваюсь - “добавить Canvas”, конечно.

  3. Завтра-послезавтра будет туториал с пошаговыми инструкциями.

  4. makc 27 Апр, 2010

    я тоже спрашивал, там надо сначала “импортнуть” классы через ctrl+r чтобы он появлялись в подсказке.

  5. flastar 27 Апр, 2010

    Я никогда в жизни не поверю, что Дембицкий сделает говно!!!
    В статье Realaxy обосран! Лично я думаю, ради хоть какого-то приличия, не стоило такое постить!

  6. admin 27 Апр, 2010

    Евгений, спасибо за ответы. Я попробовал импортировать классы как вы сказали - все работает. Сейчас поправлю статью.

    и еще, Евгений, а что с trace output? Куда он должен выводиться? Это тоже баг или где-то надо что-то крутить?

  7. admin 27 Апр, 2010

    flastar, Вы не горячитесь так. Я же говорил: “…многое из того, что у меня не сработало, могло не сработать просто по причине не знания мною правильных подходов к работе именно в этой среде”. см. последний абзац поста.
    Все понимают, что проект в ранней стадии тестирования. Все те кто тестирую увидят те же грабли и я надеюсь здесь разместить ответы на все возникшие вопросы.

  8. Alexander Eliseyev 28 Апр, 2010

    Немного поправлю - по CTRL+R импортируется не класс, а вся модель (пакет), которая содержит этот класс. Можно также нажать CTRL+M и выбрать в списке именно пакет, классы из которого требуется сделать доступными. Модели из библиотек имеют постфикс @swc_stub после имени пакета, поэтому, например модель дефолтного пакета называется просто @swc_stub.

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

  9. по трейсам - нужно импортировать logger language (ctr+L - “logger”)
    и сообщения выводить c помощью trace statement, (не глобальной функцией trace). trace и ctrl+space даст в списке trace statement.
    так же доступны debug, error, warn стейтменты.
    сообщения выводятся внизу в панеле “messages”.
    кликнув на сообщении можно перейти в точку где сообщение было послано.

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

Celadon theme by the Themes Boutique