Flex и RIA блоги
2008-06-07 |
Дождались Silverlight 2 beta 2 Как я уже писал вчера, сегодня вышла вторая бета среды исполнения для создания насыщенных интернет-приложений (Rich Internet Applications, RIA) в браузере Silverlight. Итак, что же там нового? Подробное описание нововведений в блоге Скотта Гатри. Полный список без раскрытия подробностей тут. Ну а теперь что и откуда качать (чтобы понять, что и зачем нужно, смотрите тут):
Так что качаем и изучаем |
ActualWave.com — записи изобретателя велосипедов Почему появляются новые блоги? Бывает, что вы пишете длинный комментарий с кодом к записи в чужом блоге. Но после отправки сначала оказывается, что включена премодерация, а затем вам сообщают, что неисправность в движке сайта вообще не дает возможности сохранить ваш коммент (на который вы уже убили час времени). Терять время зря — это не фэншуй, и вы, недолго думая, открываете свой блог, куда и пишете о своих находках, и где ваш коммент становится вашим постом о создании экземпляров класса по его имени. Так Олег Галабурда, вдумчивый флэш-разработчик, открыл себе блог — и пишет. Записей не слишком много, но они интересные. Вот, например, SWF/ActionScript 3 Anti-decompiler v. 0.1 разработки автора, а вот запись, из которой вы узнаете, что Олег создает компоненты для AFComponents. Хорошо, когда толковые люди блоги открывают :) |
2008-06-06 |
Встреча Аниматоров в Донецке 28 июня 2008 года — UAFPUG3 В сеть попали сведения о Сходке Аниматоров. Место и время: г. Донецк, 13:00, 28 июня 2008 года. Темы докладов: на UAFPUG-3 будет 3 мега-доклада по анимации, все темы — на странице встречи UAFPUG-3. Блек-джек: на встрече будет предпринята первая попытка розыгрыша / раздачи кое-чего эдакого (софт) и кое-каких штучек (тряпочки-наклеечки). Присутствие на встрече — ваш лотерейный билет. Регистрация в стиле +1Процедура онлайн-регистрации на встречи UAFPUG сильно упрощена. Теперь поля формы регистрации заполняются автоматически, беря значения прямо из профиля пользователя. Так что, если ваш профиль в порядке, то в форме регистрации вам нужно будет только нажать кнопку подтверждения — система заполнит все поля формы за вас.За идею с "+1" я говорю "Спасибо" Тане Белой. Я и сам подумывал об оптимизации, но ее дружеские пинки очень ускорили этот процесс. Конечно, реализация не идеальна, но регистрироваться теперь действительно должно быть проще. Тем проще, чем больше полей заполнено в вашем профиле на сайте UAFPUG; так что идите, заполняйте, тестируйте обновленную форму регистрации и пишите мне, если что не так. Кстати, Белая еще просила сделать кнопку "-1" для дерегистрации. В процессе. А пока для этого нужно, выбрав свою запись в списке участников встречи, сделать Edit -> Delete. Организацией третьей встречи UAFPUG в Донецке занимается Валерия Маллаева — спасибо тебе, Лерика :-* |
Один ItemRenderer для нескольких колонок Столкнулся с задачей отображения в DataGrid одинаковых по сути данных (UNIX_TIMESTAMP), к которым нужно применить ItemRenderer так, чтобы последний знал к какой колонке он применяется. Я нашел два способа это сделать и оба связаны с использованием свойства listData. Свойство listData имеют такие элементы как Text, Label, Button, CheckBox и т.п., то есть те, которые имплементируют интерфейс IDropInListItemRenderer. В данном случае в качестве ItemRenderer мне достаточно использовать Label. Если же необходим какой-нибудь контейнер в качестве рендерера, который не имеет свойства listData по-умолчанию, его необходимо реализовать своими силами. Итак, первый способ - это назначать данные для рендерера в зависимости от индекса колонки таблицы. Приведу кусок кода:
Здесь мы обращаемся к listData, кастим его к DataGridListData, получаем индекс колонки таблицы и в зависимости от индекса отображаем в колонках date1 или date2. Недостатком этого способа является то, что при добавлении новых колонок перед этими придется переделывать код рендерера и также нельзя перетаскивать колонки. Поэтому рассмотрим второй способ.
В данном случае мы обращаемся не к columnIndex, а к dataField, таким образом получая строку, в которой содержится название поля, из которого мы получаем данные. А с помощью data[myListData.dataField] мы получаем значение этого поля. |
Один ItemRenderer для нескольких колонок Столкнулся с задачей отображения в DataGrid одинаковых по сути данных (UNIX_TIMESTAMP), к которым нужно применить ItemRenderer так, чтобы последний знал к какой колонке он применяется. Я нашел два способа это сделать и оба связаны с использованием свойства listData. Свойство listData имеют такие элементы как Text, Label, Button, CheckBox и т.п., то есть те, которые имплементируют интерфейс IDropInListItemRenderer. В данном случае в качестве ItemRenderer мне достаточно использовать Label. Если же необходим какой-нибудь контейнер в качестве рендерера, который не имеет свойства listData по-умолчанию, его необходимо реализовать своими силами. Итак, первый способ - это назначать данные для рендерера в зависимости от индекса колонки таблицы. Приведу кусок кода:
Здесь мы обращаемся к listData, кастим его к DataGridListData, получаем индекс колонки таблицы и в зависимости от индекса отображаем в колонках date1 или date2. Недостатком этого способа является то, что при добавлении новых колонок перед этими придется переделывать код рендерера и также нельзя перетаскивать колонки. Поэтому рассмотрим второй способ.
В данном случае мы обращаемся не к columnIndex, а к dataField, таким образом получая строку, в которой содержится название поля, из которого мы получаем данные. А с помощью data[myListData.dataField] мы получаем значение этого поля. |
Уничтожение мозга, или удивительные флэш-интерфейсы Случайно, через сайт Мега-Танцора с Друпалом, нашелся дельный авторский обзор
Примечательно, что в этом обзоре известный 3D-вау-сайт Whitewoid получает тройки (см. в конце, перед самыми комментариями: "Лоадбар: в наличии, но не интуитивен совершенно. Навигация: странная, я бы сказал неудобная. На пользу 3д не пошло... ...Удобство: нет"). При этом довольно высоко оценив работу Instinct студии Park, а про сайт Johnny Slack сказано просто: очень, и очень удобно. Читать еще, того же автора: Идеальный видеоплеер. Не утопия. И мотать, мотать на ус. Хоть и неприятно местами: но со стороны здесь таки виднее. |
Ждем Silverlight 2 beta 2 Как все уже наверное знают, на TechEd Билл Гейтс в качестве прощального аккорда своего реального участия в делах Microsoft объявил о том, что нас скоро ждет (естественно в контексте Microsoft). В перспективе RIA-технологий из всего этого нас интересует лишь то, что со дня на день (сегодня? завтра?) на этой неделе стоит ждать выхода Silverlight 2 Beta 2. И всего, что этому релизу сопутствует (соответствующий аддон для Visual Studio, соответствующий релиз Expression Blend, документация, SDK и прочее). Кстати, о документации. Она уже доступна для скачивания (что для меня является верным знаком, что все будет очень скоро). Среди новшеств этой версии следует отметить, что она выпускается под лицензией GoLive!, которая дает право создавать и выпускать коммерческие приложения на базе Silverlight 2, но не предоставляет поддержки от Microsoft. Обширный список нововведений и изменений новой версии доступен тут. Краткий список основных изменений на русском доступен у Михаила Черномордикова. Так что ждем-с. |
2008-06-05 |
Предлагаю подавить нежелательное эхо во Flash Player 10 Не все об этом знают, но Flash Player пока не поддерживает Acoustic Echo Cancellation (AEC) — подавление эхо, возникающего вследствие обратной связи между колонками и микрофоном. Даже в последней бета-версии 10го Flash плеера никаких следов AEC обнаружить не удалось. Это означает, что для использования сервисов IP-телефонии на Flash необходима гарнитура или наушники, чтобы звук из колонок не попадал обратно в микрофон. Но если Adobe встроит AEC во Flash-плеер, об этой проблеме можно будет забыть, и хорошо: поддержка AEC — это очень большой плюс для создания VoIP-сервисов на базе Flash. Предлагаю продолжить успешно начатое воздействие на Adobe и проголосовать за поддержку AEC в релизной версии Flash player 10! Чтобы голосовать, нужно пройти по этой ссылке: bugs.adobe.com/jira/browse/FP-273 и нажать "Vote" в меню слева. А если вы еще не зарегистрированы в системе, то сделайте это для исправления багов Flash. Эхоподавление станет хорошим дополнением к уже начатому во Flash Player 10 усовершенствованию звуковой части проигрывателя — ведь уже использующийся в FP10 модный кодек Speex уже поддерживает AEC. |
2008-06-04 |
Сюрприз: участники RAFPUG идут на Russian Flash Awards бесплатно Участники RAFPUG, зарегистрированные в google-группе RAFPUG до 31 мая 2008 года, приглашаются на RFA БЕСПЛАТНО. Это логично: ведь им, как участникам RAFPUG, нужно будет попасть на седьмую встречу Russian Adobe Flash Platform User Group, место проведения которой случайно совпало с местом проведения церемонии Russian Flash Awards: клуб «Меццо Форте» (Москва, 1-я Останкинская ул., д. 53, метро "ВДНХ"). И даже время совпало: 19:00, 10 июня 2008 года. Не слишком ли много совпадений? Нет. Мы живем в мире синхронистичности, и, хвала Сверхрутовому Таймлайну — синхронизация работает. Обязательна регистрация на мероприятие, вход по спискамЗаявки присылайте на rafpug <att/> gmail <dott/> com: укажите Имя, Фамилию и Компанию.Приятного времясуперпрепровождения, учаснеги! |
Гоняем на машине по Google Maps — во Flash и даже без него 1. Гонка по Гуглокарте во Flash — эксперимент со свежеоткрытым Google Maps API для Flash. Введите название города (по умолчанию будет загружен Лондон), дождитесь загрузки гугл-карты — и колесите по улицам, нажимая стрелки. Клевая штука! 2. Бешеный молочник — автокросс на молоковозе по Google Earth в специальном браузерном плагине. Установите плагин, дожитесь загрузки, выберите локацию Everest — и колесите по скалам в 3D, нажимая стрелки! Бес-крыш-но:
Теперь имеем: Flash vs. Silverlight vs. Google RIA Plugin (интересно, как назовут?) vs. JS+DOM+Tamarin. |
Flash CS3 + Flex Component Kit = Мистика Вчера полдня потратили на решение такой проблемы: В течение некоторого периода времени, разрабатывался набор Flex-компонентов с использованием Flash CS и Flex Component Kit 1.1.2 (это расширение идет в поставке Flex SDK 3. Кстати, лежит в папке ...Flex SDK/frameworks/flash-integration). Всё было превосходно, мы отлаживали, обновляли их... до вчерашнего дня. Flash CS3 просто сломался. Команда "Convert Symbol to Flex Component" отрабатывает успешно, SWC генерится, но всё это бесполезно. Симптомы такие (касаются конечно только FLA-файла с компонентом):
Однако, при компиляции этого файла на другом компьютере, всё сразу чинится. И даже после пересохранения в какой-то момент починилось и на сломаном. Но не надолго. Кроме того, FLA-файл был скопирован на удаленный компьютер. При открывании файла с удаленного компьютера и работе с этим всё работает корректно! Не помогла даже переустановка Flash CS3! Подробности: Компонент представляет собой клип с Base Class: mx.flash.UIMovieClip. В поле Class прописано имя класса, который управляет этим клипом и является потомком UIMovieClip. |
Adobe Feeds (MXNA) теперь меня можно почитать и тут () |
2008-06-03 |
Кто дежурит? 40 лучших флэш проектов рунета! На сайте Дежурка.ру иногда выкладывают интересные статьи про флэш и веб-дизайн. Так, совсем недавно мы писали о конкурсе «Russian Flash Awards 2008» (RFA), а на Дежурке в статье «40 лучших флэш-проектов рунета» вы найдете обзор всех работ, вышедших в финал этого конкурса — в каждой из номинаций. Кстати, а начинающим флешерам будет полезна статья «Обзор флэш прелоадеров», в которой содержится большая подборка решений для загрузчиков. |
Взрослая настройка MySQL, установка Eclipse на Linux, Империя Добра Блог "Web Applications Scalability" продолжает выдавать качественные материалы, достойные пристального внимания как уже заматеревших, так и только начинающих заматеревать Флексоидов, Эклипсоидов и Линуксоидов. В "Установке Eclipse на Linux" рассказывается об установке Eclipse на Linux 32bit. 64-битную версию пока не трогают, зато об установке под 32 бита рассказано все — четко и лаконично. Статья же "MySQL-тюнинг. Настраиваем по-взрослому" — труд просто монументальный. Из достоверных источников известно, что писал это человек, не понаслышке познавший крупные сетевые приложения и занимающийся разработкой одного из них прямо сейчас. "Мало кто знает, что правильно настроенный MySQL может работать в 10-100 раз быстрее своего неоптимизированного собрата из базовой установки" — пишет он. Это высоко рекомендуемые материалы для серьезных людей, как и статья об Империи Добра от талантливого писателя. Ее рекомендуется читать на пятой ступени сознания, и отнестись критически к приведенным там острым высказываниям — однако и на ус будет что намотать. |
Безумная оптимизация Много об оптимизации писали эти люди: http://blog.je2050.de/2008/04/26/actionscript-3-optimization-techniques/ способы правда повторяются, но это очень полезно! Я лишь добавлю свои 5 копеек, как сделать код запутаным, но чуть быстрее). Мой извращеный способ основывается на таком предположении: public function test(p:Point, i:int) : void
….. var p:Point = new Point(); test(p,0); Например у меня в реальном методе используется 2 точки и небольшой цикл ) посмотреть: реально подойдет для гейм дева или где можно принебречь читаемостью кода ради быстроты) upd редактор вордпресса унылое какашко(ТМ) |
Параллельная работа - Acrobat.com В первый день лета 2008 года Acrobat.com вышел в онлайн. Сутью данной разработки является интеграция нескольких мощных сервисов от Adobe: Онлайновый текстовый редактор BuzzWord + коммуникатор ConnectNow + 5GB места для зашаривания ваших файлов — все это уже сейчас доступно за умеренную плану в ноль денег (стоп. пока не доступен ConnectNow, но будет скоро). Также есть Acrobat.com AIR App для драг-н-дропа файлов между вашим десктопом и вашим эккаунтом на Adobe.com (это приложение будет сильно развиваться). Рекомендую почитать официальную новость на Хабре — там масса непредвзятых комментариев, местами очень дельных. Прокомментирую от себя. Похоже, Адоб читает мои мысли. Недавно я подумал, что неплохо было бы иметь под рукой тул для быстрой коммуникации с клиентами, и вот он уже у нас в руках. По поводу возможной рекламы хорошо сказанов официальной новости в блоге Acrobat: "...по поводу того, собираемся ли мы встраивать рекламу в Acrobat.com. Коротко говоря, это не наш план на сегодня. Adobe построил хороший бизнес, продавая софт, и мы планируем продолжать в этом же духе с услугами типа софт как сервис через Acrobat.com." Мне хочется назвать это параллельной работой, понятием, в котором едва ли преобладает чисто техническая сторона, но играет большую роль также элекмент мотивации: обычно моя работа над доком движется шустрее, если вы я не чувствую себя одиноким, когда знаю, что кто-то тоже сейчас работает над ним. Принцип чата. Возможно, это всего лишь моя лень, но тогда должна быть и подобные мне. Инструменты для лентяев, ага ;) А еще это — грандиознейшая (по моим соображениям) обкатка Flex SDK. |
Демонстрация 3D поверхностей с помощью движка Alternativa3D Товарищи из проекта “Alterantiva Platform” предлагают зарегистрироваться на сайте и бесплатно скачать библиотеку Alternativa3D для использования в некоммерческих целях. Что я и сделал. И даже “нарисовал” первую свою демку. Вот, предлагаю на Ваш суд “Демонстрация 3D поверхностей с помощью движка Alternativa3D” :
Кстати говоря, Flash Player 10 в этой демке работает на-а-амного шустрее. Отвечаю. |
2008-06-02 |
AlternativaPlatform. Знакомство Мы долго, с любопытством и восхищением, наблюдали за волшебством, которое творили наши Пермские коллеги. Они писали умные слова, которые мы привыкли встречать в описаниях 3D-ускорителей или настройках 3D-шутеров. Они выкладывали демки, которые не укладывалось в нашем 2D Flash-сознании и вызывали только один вопрос: "КАК?". Всё это казалось таким далеким, неосязаемым, недостижимым... И вот, свершилось. Теперь можно просто зайти на сайт AlternativaPlatform, зарегистрироваться, скачать движок и просто пользоваться. Соблюдая, несомненно, лицензионное соглашение и правила этики. Запомним это пророчество: "AlternativaPlatform.com — сеть уже не будет такой, как прежде ". Итак, регистрируемся. Платформа делится на три части: Alternativa3d, AlternativaGUI, AlternativaCore. Пока доступен первый из них, его и качаем. Скачиваем архив и разархивируем его в предварительно созданную папку "Alternativa3D". В обзоре Alternativa3d указывается, что на данный момент еще не все технические особенности внедрены. Самое вкусное оставленно на потом. Нам пока хватит и того что есть. Идем в раздел документации. Но это сделать уже не так просто... 2 июня, к 11 часам сервер просто лежит. Еще 10 минут назад я спокойно обозревал сайт Альтернативы, но теперь, по всей видимости, придется прерваться. Интересно, это от наплыва посетителей или просто тех-проблемы?.. Не прошло и получаса, как сервер опять заработал и мы входим в раздел. Здесь мы видим:
Уроки 1. Создаем во FlashDevelop новый "Default" проект, указываем в "Project > Properties... > Compiler Options > SWC Libraries":
2. Создаем файл HelloAlternativa3D.as, указываем ему "Always Compile" и копируем в него код примера. 3. Компилируем и запускаем. Всё работает без проблем, как и в примере на сайте. На первый взгляд всё просто. Побаловались с разными параметрами и почитали аннотации к коду. Примерно начинает складываться общая картинка. Любопытно было поэксперементировать с количеством сегментов куба. Первое желание - выставить их побольше и посмотреть, как это подвесит FP. Приятно удивило, что, к примеру, поставив их по 20 на каждое измерение, FP по началу явно подвис, но потом, видать, что-то сгенерилось и всё заработало достаточно быстро. Но 30 сегментов FP уже не стерпел... По аналогии с первым смотрим два других урока. Писать тут особенно нечего - всё достаточно подробно изложено. Теперь от баловства надо переходить к делу. Только для начала нужно уточнить условия использования Alternativa3D в коммерческих целях. В отличии от PaperVision3D, это не OpenSource, со всеми вытекающими последствиями. И значит открыт вопрос использования продуктов на базе альтернативы не в личных целях. Ну вот, мы немножко пощупали (а сказать по честному, пока лишь едва ущипнули) этого мистического зверя, и хочется верить, что мы на нем еще ух как покатаемся! |
Скачать движок Alternativa 3D и проверить его в работе Итак, на сайте AlternativaPlatform.com появилась возможность скачать и попробовать в действии новый 3D-движок (уже адаптированный к Flash Player 10). Для этого нужно сначала зарегистрироваться, а затем войти под своим логином на страницу движка Alternativa 3D и скачать его оттуда в виде SWC-библиотеки. Для некоммерческого использования Alternativa3D отдается бесплатно — только разместите ссылку на AlternativaPlatform в своем приложении (она не появится там автоматически — это вопрос лично ваших уровня профессионализма и уважения к братьям по цеху). Обратите внимание: уроки по движку Alternativa 3DНачиная с простейшего классического примера вращения куба "Hello, Alternativa3D!", проходя через урок по построению геометрии дома, и включая работу с материалами и UV-координатамиразработчики движка объясняют, как пользоваться их творением. Я попробовал первый урок — таки работает, см. под катом. |
2008-06-01 |
AlternativaPlatform.com — сеть уже не будет такой, как прежде Если вы не верите, что русские разработчики способны удивить мир своим профессионализмом — наблюдайте за свежеоткрытым сайтом AlternativaPlatform.com. На этом ресурсе нас ждет масса сюрпризов — уже скоро мы станем свидетелями яркого взлета. Итак, Платформа состоит из 3 частей: Alternativa 3D — браузерный 3D-движок на базе Adobe Flash, AlternativaGUI — содержит все основные элементы интерфейса и AlternativaCore — система многопользовательских серверов. К ним уже есть Доки, Багтрекер и Форум — и будет больше. Главное начинается только сейчас! |
2008-05-30 |
Хороший стиль Flex-программирования. ASDoc Немного о комментировании/документировании в стиле ASDoc: ASDoc. ASDoc Комментирование свойств Документируйте только первую функцию пары установщик/получатель (get/set). Пример объявления и документирования свойства: /** * @private * The backing variable for the property. */ private var _someProp:Foo; /** * Place all comments for the property with the getter which is defined first. * Comments should cover both get and set behavior as appropriate. */ public function get someProp():Foo { ... } /** * @private */ public function set someProp(value:Foo):void { ... } Комментарии ASDoc применимы к тегам метаданных так же как и к другим элементам класса. Поэтому важно, чтобы комментарий относился к правильному элементу. Например, если свойство обозначено тегом Bindable, комментарий должен располагаться непосредственно перед функцией получателя (get), а не над метатегом Bindable: можно: [Bindable("somePropChanged")] /** * Comments for someProp */ public function get someProp():Foo нельзя: /** * Comments for someProp */ [Bindable("somePropChanged")] public function get someProp():Foo Про документирование ASDoc можно посмотреть подробнее здесь. PS: Ввиду уродского движка редактирования текста Blogger, местами поехали все пробелы в статье Хороший стиль Flex-программирования. Форматирование. Поэтому, лучше не надеяться на примеры кода, а читать текст. Заключение Цикл переводных статей про хороший стиль Flex-программирования еще не закончен. Через некоторое время я вернусь к этим статьям и, возможно, те правила, которые были отмечены автором как TBD будут опубликованы. На сегодня мы имеем достаточно информации, чтобы улучшить свой код. Будем надеяться, что с выходом Flash Player 10, новых SDK и т.п., правила сильно не изменятся.
|
Если 3D, то по-взрослому: официальный запрос в Adobe по поводу контроля над мип-маппингом. Нужна ваша поддержка! Заметно, что Adobe в последнее время становится более отзывчивой и разработчики Flash Player идут на контакт с разработчиками под Flash Player. Так, недавняя акция Андре Мишеля "Adobe, make some noise" увенчалась успехом — уже сейчас во Flash Player 10 расширены возможности для программной генерации звука! (Я и сам чуть не опубликовал эту петицию — но выход 'Astro' меня опередил. Есть полное описание той, уже решеной проблемы, на русском — в статье "Даёшь аудио-синтез в Flash Player 10!" блога Flash Communist). Добъемся правильного мип-маппинга?Так почему бы нам не дожать вопрос, поднятый ещё год назад с выходом третьего апдейта к Flash Player 9 — возможность отключения автоматического мип-маппинга? Давайте этот вопрос дожмем сейчас, чтобы потом получить качественную трехмерку в релизе Flash Player 10. Ведь мип-маппинг — штука мега полезная, но иногда он приводит к бесконтрольному пожиранию памяти и процессорного времени, особенно при частом изменении больших чётных битмап. Товарищи из Adobe предлагают заново создать запись в их bug-tracking системе Adobe JIRA и как можно активнее за неё проголосовать — это учитывается при реализации фич. Далее — движение FP10 к совершенству. Эта запись в Адобовском багтрекере уже создана Антоном Волковым — теперь просто голосуйте за контроль над мип-маппингом! Как голосовать за баги в Adobe JIRA?1) Зарегистрироваться или быть уже зарегистрированным. |
Пример динамического наложения двух mp3 Поигрался с примером Tinic Uro по поводу новых методов класса Sound, в частности, extract():
|
Пример динамического наложения двух mp3 Поигрался с примером Tinic Uro по поводу новых методов класса Sound, в частности, extract():
|
В этом году «Russian Flash Awards» пройдет в «космическом стиле» Интересное совпадение: организаторы Russian Flash Awards как бы предвидели стилистику вышедшего недавно Flash Player 10, кодовое имя которому — Astro, и синхронизировались стилями с новым проигрывателем? Хочу напомнить вам, что до 1 июня вы еще можете подать заявку на участие в церемонии награждения победителей и тем самым получить возможность приобрести билет на церемонию со скидкой в 50% (итого заплатиы 4 тыс. рублей). Приведу официальный пресс-релиз:
10 июня в московском клубе «Меццо Форте» состоится третья Церемония вручения Премии в области flash-разработок «Russian Flash Awards 2008». Организаторами Премии выступают корпорация «Adobe Systems» и российская IT-компания «Флексис». Организационную и PR-поддержку мероприятия осуществляет агентство «Гуров и партнеры».
«Russian Flash Awards» является одним из знаковых событий в мире информационных технологий и искусства. Среди работ будут представлены лучшие российские и зарубежные flash-проекты в девяти номинациях: Art, Коммерция, AIR/Flex, Игра, Анимация, Мультипликация, Техническая заслуга, Видео, 3D. В церемонии награждения примут участие представители органов власти, руководители российских и зарубежных компаний, видные деятели культуры, звезды шоу-бизнеса, журналисты авторитетных СМИ и телеканалов, а также талантливые специалисты в области IT. Мероприятие будет проходить в космической стилистике. Гостей праздника ждет музыкальная программа с участием диджея Svet'а, а также «космические» призы и подарки. <----- конец пресс-релиза. Кстати, о победителях. Уже неоднократно я встречал нарекания типа "а почему эта работа (вкусняшка) не победила, а победила вот эта (какашка)?". Друзья, но разве бывает так, что мнения одинаковы? Реально — на любой аргумент "за" что-либо всегда можно найти еще больше аргументов "против". А вот член жюри RFA Иван Дембицкий подробно рассказывает о том, как именно он оценивал работы. И еще: сколь пафосно ни звучит пресс-релиз — но факт заключается в том, что событий, подобных RFA, действительно нет, и фраза о том, что «Russian Flash Awards» является одним из знаковых событий в мире информационных технологий и искусства — верна. |
Хороший стиль Flex-программирования. Форматирование Здесь речь пойдет о том, как лучше оформлять файлы Flex-фреймворка. Статья Formatting. Форматирование Длина строки Используйте перенос на следующую строку, если длина строки превышает 80 символов. Это дает следующие преимущества:
Отступы Используйте отступы в 4 пробела. Настройте редактор так, чтобы вместо символа табуляции вставлялись символы пробелов. Это необходимо для того, чтобы в код выглядел без искажений в программах с другой системой формирования отступов. Например Notepad отображает отступы в 8 символов. Разделительные блоки Код необходимо разбивать на разделы, а полученные разделы - озаглавливать. Для этого используйте большой и малый разделители. Большой разделитель выглядит следующим образом: //-------------------------------------------------------------------------- // // Overridden methods // //-------------------------------------------------------------------------- Блок большого разделителя начинается с 4-го символа строки и заканчивается на 80-м. Текст начинается с 8-го символа. Малый разделитель выглядит следующим образом: //---------------------------------- // visible //---------------------------------- Блок малого разделителя начинается с 4-го символа строки и заканчивается на 40-м. Текст начинается с 8-го символа. Необходимо вставлять одну пустую строку до и одну после каждого разделителя. Разделение блоков объявления Используйте одну пустую строку для разделения блоков объявления констант, переменных, функций: Метаданные можно: Inspectable[a="1", b="2"] Индексирование массивов Не ставьте пробелы: можно: a[0] Расстановка запятых После запятой, оставляйте один пробел. Это правило распространяется на список аргументов, элементы массива, свойства объекта. Массивы Ставьте один пробел: можно: [ 1, 2, 3 ] Исключение составляет только пустой массив: Если строка инициализации массива слишком длинна, разбивайте ее на несколько строк с выравниванием квадратных скобок: static var numberNames:Array /* of String */ = Объекты Ставьте один пробел: можно: { a: 1, b: 2, c: 3 } Исключение составляет только пустой массив: Если строка инициализации объекта слишком длинна, разбивайте ее на несколько строк с выравниванием квадратных скобок: private static var TextStyleMap:Object = Функции Пример форматирования: var f:Function; Объявление типов Не ставьте пробелы до и после двоеточия, которое разделяет имя переменной, параметра, или функцию от типа. можно: var n:Number; можно: function f(n:Number):void Ставьте пробелы до и после оператора присваивания: Ставьте пробелы до и после инфиксного оператора: Ставьте пробелы до и после оператора сравнения: Не ставьте пробел между префиксным оператором и операндом: Не ставьте пробел между операндом и постфиксным оператором: Операторы Начинайте каждый оператор с новой строки. Это дает возможность установить контрольную точку (breakpoint) на любой из операторов. Всегда выравнивайте фигурные скобки блоков операторов: function f():void Нельзя: function f():void { Объявление функций Ставьте один пробел после каждой запятой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой: Если список параметров переносится на другую строку, перенесенные строки должны иметь отступ на уровне первого параметра после левой скобки. Можно располагать несколько параметров на одной строке, только если они умещаются. В ином случае, располагайте каждый параметр на отдельной строке. Если четный параметр не умещается, перенесите первый параметр на следующую строку с отступом на уровне начала имени функции.
Вызов функций Ставьте один пробел после каждой запятой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой: Оператор if Ставьте пробел между ключевым словом if и левой скобкой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой: Оператор for Ставьте пробел между ключевым словом for и левой скобкой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой: Если описание цикла переносится на другую строку, перенесенные строки должны иметь отступ на уровне первого символа после левой скобки:
Оператор switch Ставьте пробел между ключевым словом switch и левой скобкой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой: Комментарий По всей видимости исходная статья находится на стадии разработки, т.к. под конец вылезло множество ошибок и обрывков фраз. Сделаю ревизию через пару месяцев. В основном, всё логично и выполнимо. Последний FlashDevelop успешно реализует эти правила в своем автокомплите. Теперь стало ясно, почему они так резко изменили политику расстановки фигурных скобок функций, а именно, перенос левой фигурной скобки на следующую строку. Честно говоря, я с этим переносом намучался, поскольку при переходе на стиль форматирования FlashDevelop, я специально переучивался оставлять левую скобку на строке с определением функции. А тут вдруг огорошили... И опять возвращаться к прежнему формату. Ну всё. Следующий проект начинаю правильно форматировать. Кстати, о проектах, которые сделаны в старом (не по правилам) формате. Часто приходится к ним возвращаться, дорабатывать, улучшать. Но уже трудно работать по-старому. Как тут быть? На переформатирование времени тратить не хочется. Где взять такой реформатер??! Пока для себя я держу правило - работать в контексте стиля программирования дорабатываемого кода. Мой это код или чужой - всё равно следовать правилам текущего документа. Остался маленький "хвостик" про ASDoc, который мы сейчас и разберем. |
2008-05-29 |
Нет в жизни счастья: новые проблемы для Flash Player Не успели мы обрадоваться выходу апдейта безопасности 9ого плеера, как снова начались проблемы… |
В проект MoeKorolevstvo.ru требуется АС3 программист, Москва Параметры:
Подробности: Игра на данный момент работает в режиме закрытой беты; вы можете запросить приглашение, обозначив, откуда пришли. Требуется программист, который не будет бояться ломать то, что работает, ради того, чтобы сделать лучше без апокалиптических последствий. Движок игры технически переходит на новый уровень развития и нужна еще одна голова и еще пара-тройка рук. Если ко всему этому вы интересуетесь игростроением и игровым фольклором, знаете, чем orc отличается от ork, откуда взялась фраза "Dopefish Lives!" и умеете колонизировать незнакомые планеты — это большой плюс. Далее — почта для прямой связи и перспектива работы в хорошей компании. Только что заново понял фразу "работа в хорошей компании". Это когда работаешь вместе с хорошими людьми. |