Flex и RIA блоги



2008-06-07

15:49:06, Constantiner's blog
Дождались Silverlight 2 beta 2

Silverlight LogoКак я уже писал вчера, сегодня вышла вторая бета среды исполнения для создания насыщенных интернет-приложений (Rich Internet Applications, RIA) в браузере Silverlight.

Итак, что же там нового?

Подробное описание нововведений в блоге Скотта Гатри. Полный список без раскрытия подробностей тут.

Ну а теперь что и откуда качать (чтобы понять, что и зачем нужно, смотрите тут):

Так что качаем и изучаем :)

Bookmark this article at


10:49:18, Flash-ripper.com
ActualWave.com — записи изобретателя велосипедов

Почему появляются новые блоги? Бывает, что вы пишете длинный комментарий с кодом к записи в чужом блоге. Но после отправки сначала оказывается, что включена премодерация, а затем вам сообщают, что неисправность в движке сайта вообще не дает возможности сохранить ваш коммент (на который вы уже убили час времени). Терять время зря — это не фэншуй, и вы, недолго думая, открываете свой блог, куда и пишете о своих находках, и где ваш коммент становится вашим постом о создании экземпляров класса по его имени.

Так Олег Галабурда, вдумчивый флэш-разработчик, открыл себе блог — и пишет.

Записей не слишком много, но они интересные. Вот, например, SWF/ActionScript 3 Anti-decompiler v. 0.1 разработки автора, а вот запись, из которой вы узнаете, что Олег создает компоненты для AFComponents. Хорошо, когда толковые люди блоги открывают :)


2008-06-06

20:40:04, Flash-ripper.com
Встреча Аниматоров в Донецке 28 июня 2008 года — UAFPUG3

+1

В сеть попали сведения о Сходке Аниматоров.

Место и время: г. Донецк, 13:00, 28 июня 2008 года.

Темы докладов: на UAFPUG-3 будет 3 мега-доклада по анимации, все темы — на странице встречи UAFPUG-3.

Блек-джек: на встрече будет предпринята первая попытка розыгрыша / раздачи кое-чего эдакого (софт) и кое-каких штучек (тряпочки-наклеечки). Присутствие на встрече — ваш лотерейный билет.

Регистрация в стиле +1

Процедура онлайн-регистрации на встречи UAFPUG сильно упрощена. Теперь поля формы регистрации заполняются автоматически, беря значения прямо из профиля пользователя. Так что, если ваш профиль в порядке, то в форме регистрации вам нужно будет только нажать кнопку подтверждения — система заполнит все поля формы за вас.

За идею с "+1" я говорю "Спасибо" Тане Белой. Я и сам подумывал об оптимизации, но ее дружеские пинки очень ускорили этот процесс. Конечно, реализация не идеальна, но регистрироваться теперь действительно должно быть проще. Тем проще, чем больше полей заполнено в вашем профиле на сайте UAFPUG; так что идите, заполняйте, тестируйте обновленную форму регистрации и пишите мне, если что не так.

Кстати, Белая еще просила сделать кнопку "-1" для дерегистрации. В процессе. А пока для этого нужно, выбрав свою запись в списке участников встречи, сделать Edit -> Delete.

Организацией третьей встречи UAFPUG в Донецке занимается Валерия Маллаева — спасибо тебе, Лерика :-*


15:47:00, Flex 2 & Co
Один ItemRenderer для нескольких колонок
Столкнулся с задачей отображения в DataGrid одинаковых по сути данных (UNIX_TIMESTAMP), к которым нужно применить ItemRenderer так, чтобы последний знал к какой колонке он применяется. Я нашел два способа это сделать и оба связаны с использованием свойства listData. Свойство listData имеют такие элементы как Text, Label, Button, CheckBox и т.п., то есть те, которые имплементируют интерфейс IDropInListItemRenderer. В данном случае в качестве ItemRenderer мне достаточно использовать Label. Если же необходим какой-нибудь контейнер в качестве рендерера, который не имеет свойства listData по-умолчанию, его необходимо реализовать своими силами.
Итак, первый способ - это назначать данные для рендерера в зависимости от индекса колонки таблицы. Приведу кусок кода:

<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml">
...
override public function set data(value:Object):void
{
super.data = value;
var myListData:DataGridListData = DataGridListData(listData);
var colIndex:int = myListData.columnIndex;
switch (colIndex)
case 1: text = data.date1; break;
case 2: text = data.date2; break;
}
...
</mx:Label>

Здесь мы обращаемся к listData, кастим его к DataGridListData, получаем индекс колонки таблицы и в зависимости от индекса отображаем в колонках date1 или date2. Недостатком этого способа является то, что при добавлении новых колонок перед этими придется переделывать код рендерера и также нельзя перетаскивать колонки. Поэтому рассмотрим второй способ.

<?xml version="1.0" encoding="utf-8"?>
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridListData;
[Bindable] private var formattedVal:String;

override public function set data(value:Object):void
{
super.data = value;
if (value)
{
var myListData:DataGridListData = DataGridListData(listData);
var dt:Date = new Date();
var cellVal:int = int(data[myListData.dataField]);
dt.time = cellVal*1000;
formattedVal = dateformatter.format(dt);
}
}
]]>
</mx:Script>
<mx:DateFormatter id="dateformatter" formatString="DD.MM.YY J:NN"/>
<mx:text>{formattedVal}</mx:text>
</mx:Label>

В данном случае мы обращаемся не к columnIndex, а к dataField, таким образом получая строку, в которой содержится название поля, из которого мы получаем данные. А с помощью data[myListData.dataField] мы получаем значение этого поля.

15:47:00, Flex 2 & Co
Один ItemRenderer для нескольких колонок
Столкнулся с задачей отображения в DataGrid одинаковых по сути данных (UNIX_TIMESTAMP), к которым нужно применить ItemRenderer так, чтобы последний знал к какой колонке он применяется. Я нашел два способа это сделать и оба связаны с использованием свойства listData. Свойство listData имеют такие элементы как Text, Label, Button, CheckBox и т.п., то есть те, которые имплементируют интерфейс IDropInListItemRenderer. В данном случае в качестве ItemRenderer мне достаточно использовать Label. Если же необходим какой-нибудь контейнер в качестве рендерера, который не имеет свойства listData по-умолчанию, его необходимо реализовать своими силами.
Итак, первый способ - это назначать данные для рендерера в зависимости от индекса колонки таблицы. Приведу кусок кода:

<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml">
...
override public function set data(value:Object):void
{
super.data = value;
var myListData:DataGridListData = DataGridListData(listData);
var colIndex:int = myListData.columnIndex;
switch (colIndex)
case 1: text = data.date1; break;
case 2: text = data.date2; break;
}
...
</mx:Label>

Здесь мы обращаемся к listData, кастим его к DataGridListData, получаем индекс колонки таблицы и в зависимости от индекса отображаем в колонках date1 или date2. Недостатком этого способа является то, что при добавлении новых колонок перед этими придется переделывать код рендерера и также нельзя перетаскивать колонки. Поэтому рассмотрим второй способ.

<?xml version="1.0" encoding="utf-8"?>
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridListData;
[Bindable] private var formattedVal:String;

override public function set data(value:Object):void
{
super.data = value;
if (value)
{
var myListData:DataGridListData = DataGridListData(listData);
var dt:Date = new Date();
var cellVal:int = int(data[myListData.dataField]);
dt.time = cellVal*1000;
formattedVal = dateformatter.format(dt);
}
}
]]>
</mx:Script>
<mx:DateFormatter id="dateformatter" formatString="DD.MM.YY J:NN"/>
<mx:text>{formattedVal}</mx:text>
</mx:Label>

В данном случае мы обращаемся не к columnIndex, а к dataField, таким образом получая строку, в которой содержится название поля, из которого мы получаем данные. А с помощью data[myListData.dataField] мы получаем значение этого поля.

14:44:38, Flash-ripper.com
Уничтожение мозга, или удивительные флэш-интерфейсы

Случайно, через сайт Мега-Танцора с Друпалом, нашелся дельный авторский обзор детских страхов дизайнера инфантильных идей заказчика флэш-интерфейсов (они же Silverlight, JavaScript-2010, JavaFX и GoogleUI в скором будущем). Автор отмечает такие качества работ, как исполнение прелоадера, необычность навигации, эффекты, нетривиальность стартовой, свобода выбора – html или flash и степень удобности вышеперечисленных пунктов:

Удивительные флэш-интерфейсы от Ярослава Бирзула
Читать: удивительные интерфейсы от Ярослава Бирзула.

Примечательно, что в этом обзоре известный 3D-вау-сайт Whitewoid получает тройки (см. в конце, перед самыми комментариями: "Лоадбар: в наличии, но не интуитивен совершенно. Навигация: странная, я бы сказал неудобная. На пользу 3д не пошло... ...Удобство: нет"). При этом довольно высоко оценив работу Instinct студии Park, а про сайт Johnny Slack сказано просто: очень, и очень удобно.

Читать еще, того же автора: Идеальный видеоплеер. Не утопия. И мотать, мотать на ус. Хоть и неприятно местами: но со стороны здесь таки виднее.


14:32:12, Constantiner's blog
Ждем Silverlight 2 beta 2

Silverlight LogoКак все уже наверное знают, на TechEd Билл Гейтс в качестве прощального аккорда своего реального участия в делах Microsoft объявил о том, что нас скоро ждет (естественно в контексте Microsoft). В перспективе RIA-технологий из всего этого нас интересует лишь то, что со дня на день (сегодня? завтра?) на этой неделе стоит ждать выхода Silverlight 2 Beta 2. И всего, что этому релизу сопутствует (соответствующий аддон для Visual Studio, соответствующий релиз Expression Blend, документация, SDK и прочее).

Кстати, о документации. Она уже доступна для скачивания (что для меня является верным знаком, что все будет очень скоро).

Среди новшеств этой версии следует отметить, что она выпускается под лицензией GoLive!, которая дает право создавать и выпускать коммерческие приложения на базе Silverlight 2, но не предоставляет поддержки от Microsoft.

Обширный список нововведений и изменений новой версии доступен тут. Краткий список основных изменений на русском доступен у Михаила Черномордикова.

Так что ждем-с.

Bookmark this article at


2008-06-05

13:09:14, Flash-ripper.com
Предлагаю подавить нежелательное эхо во 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

19:36:17, Flash-ripper.com
Сюрприз: участники 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: укажите Имя, Фамилию и Компанию.

Приятного времясуперпрепровождения, учаснеги!


14:17:49, Flash-ripper.com
Гоняем на машине по Google Maps — во Flash и даже без него

1. Гонка по Гуглокарте во Flash — эксперимент со свежеоткрытым Google Maps API для Flash. Введите название города (по умолчанию будет загружен Лондон), дождитесь загрузки гугл-карты — и колесите по улицам, нажимая стрелки. Клевая штука!

2. Бешеный молочник — автокросс на молоковозе по Google Earth в специальном браузерном плагине. Установите плагин, дожитесь загрузки, выберите локацию Everest — и колесите по скалам в 3D, нажимая стрелки! Бес-крыш-но:


Рис 1. Бешеный молочник: доставка в Гималаи!

Теперь имеем: Flash vs. Silverlight vs. Google RIA Plugin (интересно, как назовут?) vs. JS+DOM+Tamarin.


12:39:00, Flash-разработка
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-файла с компонентом):
  • Перестали работать тайм-лайновые скрипты ВООБЩЕ - в любом клипе.
  • Компоненты, которые получаются в результате публикации SWC Flex не видит.
  • Сначала символ компонента назывался "myButton". Позже, он был переименован с именем компонента "roomButton". Однако, иногда, имя символа (и класса) неожиданно опять слетает на старое без какой-либо закономерности.

Однако, при компиляции этого файла на другом компьютере, всё сразу чинится. И даже после пересохранения в какой-то момент починилось и на сломаном. Но не надолго.

Кроме того, FLA-файл был скопирован на удаленный компьютер. При открывании файла с удаленного компьютера и работе с этим всё работает корректно!

Не помогла даже переустановка Flash CS3!

Подробности: Компонент представляет собой клип с Base Class: mx.flash.UIMovieClip. В поле Class прописано имя класса, который управляет этим клипом и является потомком UIMovieClip.


09:57:58, 33 коровы
Adobe Feeds (MXNA)

теперь меня можно почитать и тут

()


2008-06-03

20:17:08, LIFE.Flash
Group94 – web-дизайн из Бельгии с любовью

Несколько слов о Group94

Студия Group94 была основана Паскаль Лероем (Pascal Leroy) в Генте (Бельгия) 9 лет назад.
И это довольно не маленький срок для студии. Лерой приравнивает деятельность Group94 к «высокотехнологичным инженерным компаниям», выпускающим британские автомобили, с такой же особой любовью, как команда Group94 разрабатывает сайты.

И правда, это чувствуется во всех их работах.

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

Кстати, года три назад, когда в Group94 работало всего 5 человек, Лерой говорил точно также.
Тогдашний состав состоял из 5 человек. Как бы то ни было, я думаю, что им будет нелегко работать в другой компании с теми татуировками (в виде логотипа G-94) которые они сделали у себя на груди и руках :)

Читать далееSulfonamides
Xanax and depression
What do xanax look like
Pheniramine
Lansoprazole
Trihexyphenidyl
Celexa phentermine
Kaopectate
Bosch power tools zio lowest viagra
Methyldopa
Cefamandole
Foscarnet
Buy viagra without a prescription
Non prescription phentermine
Famvir
Kanamycin
Buy phentermine online with paypal
Tramadol hydrochloride tablets
Order phentermine diet pill
Buy cialis in uk
Cod online tramadol
Phentermine delivered overnight
Methdilazine
Buy prescription tramadol without
Cheap phentermine cod
Feldene
Viagra in canada
Phentermine online cod
Cheapest place to buy phentermine
Generic viagra online
Buy lvivhostcom online viagra viagra
Buy viagra on line
Xanax canada
Klonopin vs xanax dosage
Levallorphan
Tramadol
Overdose xanax
Difference between cialis and viagra
How to inject xanax pills
Snorting phentermine
Picture of soma
Pentamidine
Bactrim
Meridia diet pill
Cheapest cialis
Accupril
Chlorambucil
Niacin
Demecarium
Phentermine for weight loss
Lexapro and xanax
Phentermine prices
Phentermine mexican pharmacies online
Buy cialis soft tabs
Lowest price phentermine
Thiphenamil
Free shipping with phentermine order
Rofecoxib
Phentermine 37.5 tablet
Soma bike
Phentermine referring report urls
Discount phentermine to florida
Phentermine on line w
Xanax online no prescription
Feldene
Azatadine
Free cialis
Free viagra
Xanax sale
Darvocet
Side effects of drug xanax
Cialis review
Urine drug testing of tramadol
Oleandomycin
Xanax drug tests
Phentermine cod shipping
Cheapest phentermine diet pill
Adipex between difference phentermine
Next day delivery on phentermine
Iodothyrin
Mark martin viagra
Flunitrazepam
Hydrocodone information
Will xanax help me sleep while on adderall
Actonel
Nelfinavir
Decamethonium
Xanax look alike
Levothyroxine
Buy generic ambien
Accupril
Buy online purchase viagra
Is phentermine safe
Accolate
120 cheap tramadol
Xanax online without a prescription
Ouabain
Ionamin
Clomiphene
Buying tramadol online
Cefonicid
Get viagra drug online
Purchase tramadol
Streptokinase
Hydrocodone prescription
Brompheniramine
Lyrica
Thiabendazole
Cialis generic canada
Doxorubicin
Herbal viagra uk
Phentermine reviews
Phentermine 180
Description of meridia
Moexipril
Enalapril
Mycostatin
Online pharmacy phentermine cod
Us pharmacy phentermine
Buy phentermine online com
Pilljar phentermine
Iodine
Estrogen
Buy phentermine online same day delivery
Viagra on line
Celexa
Buspar xanax
Iothalamate
Low price phentermine
Tramadol 180
Prescription phentermine with cod payment
Soma addiction
Buy viagra in uk
Appetite suppressants and phentermine
Buy Famvir
Tramadol 377
Better than viagra
Herbal viagra reviews
Negative side effects of phentermine
Prozac interact xanax
Felbamate
Ceftriaxone
Guanabenz
Buying phentermine
Cycrimine
Buy viagra
Spiramycin
Phentermine forums and chats
Cheap viagra generic
Heroin


20:17:08, LIFE.Flash
Group94 – web-дизайн из Бельгии с любовью

Несколько слов о Group94

Студия Group94 была основана Паскаль Лероем (Pascal Leroy) в Генте (Бельгия) 9 лет назад.
И это довольно не маленький срок для студии. Лерой приравнивает деятельность Group94 к «высокотехнологичным инженерным компаниям», выпускающим британские автомобили, с такой же особой любовью, как команда Group94 разрабатывает сайты.

И правда, это чувствуется во всех их работах.

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

Кстати, года три назад, когда в Group94 работало всего 5 человек, Лерой говорил точно также.
Тогдашний состав состоял из 5 человек. Как бы то ни было, я думаю, что им будет нелегко работать в другой компании с теми татуировками (в виде логотипа G-94) которые они сделали у себя на груди и руках :)

Читать далееDiet phentermine pill
Low dose xanax prosexual
Fioricet information
Xanax online
Effect viagra
Xanax 2mg generic alprazolam 180 pills
Buy ambien online
Plaquenil
How to use viagra
Lisinopril drug interaction viagra
Information about street drugs or xanax bars
Metrizoate
Ambien
Tramadol hcl tab
Ionamin phentermine
Buy soma online
Xanax prescription online
Snorting phentermine
Free prescription sample viagra
Mefloquine
Bactrim
Viagra dangers
Prozac and phentermine
Phentermine hoodia diet pill
Atenolol
Alfentanil
Phentermine cheapest
Generic uk viagra
Buy phentermine prescription
Best price on phentermine
Best generic viagra
Cialis com
Cefamandole
Ambien on line
Phentermine low price
Moxifloxacin
Free viagra prescription
Tramadol sale
Low cost viagra
Percocet
India generic viagra
Order vicodin
Online pharmacies phentermine xenical meridia
Phentermine and methamphetamine
Nialamide
Nolvadex
Order soma online
Irbesartan
Phentermine 15mg
Tramadol hydrochloride tablets
Viagra alternative herbal supplement
Ups cod phentermine
Captopril
Avandia
Comparison levivia viagra
Premphase
Phentermine withdrawal symptoms
Best price for generic viagra
Losec
Flosequinan
Norflex
Phentermine prescriptions
Carbarsone
Phentermine lortab online
Viagra cialis generic
Drug interactions tramadol elavil
Cialis story
Iothalamate
Epivir
Buspirone
Mevacor
On line doctor phentermine
Genaric viagra
Loprox
Xanax withdrawel
Buy levivia viagra
Tramadol hydrochloride tablet
Triprolidine
Fioricet addiction
Mobic
Cialis sample
Viagra herbal
Phentermine delivered overnight
Flonase
Alternative herbal supplement viagra
Itraconazole
Terfenadine
Free trial viagra
Etretinate
Arthrotec
Cimetidine
Free viagra
Free shipping cheap phentermine
Womans viagra
Low cost phentermine health insurance lead
Hydroxyzine
Buy phentermine fedex
Dacarbazine
Buy tramadol
Xanax death
Flurazepam
Generic cialis soft tabs
Abbr href rel title title viagra
Allopurinol
Cheap perscription phentermine
Aminopterin
Norgestrel
Cheap phentermine no rx
Vicodin abuse
Xanax drug test
Inform your doctor medication phentermine dose weight
Ambien 10mg
Viagra lawsuits
Best cialis price
Buy viagra line
Side effects of phentermine
Augmentin
Grapefruit xanax
Butorphanol
Viagra lawsuits texas
Methantheline
Propylthiouracil
Eulexin
Trandolapril
Taking phentermine
Lipitor
Cheap phentermine without prescription
Pravastatin
Colchicine
30mg phentermine
Phentermine perscription
Phentermine for sale
Divalproex
Hyperalimentation
Cialis soft
Celecoxib
Cialis drug for impotence
Online pharmacy phentermine
Overnight tramadol
Mephentermine
Cialis prescriptions
Avodart
Buy buy domain link online online viagra info viag
Tramadol active ingredient
Cope
Coumadin
Picture of generic xanax
Idarubicin
Dangers of viagra
Niacin
More news by category Topic -: Buy phentermine saturday delivery ohio Tramadol hydrochloride tablets Picture of xanax pills Free shipping cheap phentermine Buying phentermine without prescription Safety of phentermine Pyridium Generic viagra cialis Cialis generic india Pink oval pill 17 xanax identification Buy free phentermine shipping Best price for generic viagra Information about street drugs or xanax bars Ordering viagra Snorting phentermine Hydrocodone overdose Lithium Amiodarone Get online viagra Order viagra prescription Order xanax paying cod Cheap phentermine free shipping Imiquimod Tramadol next day Linkdomain buy online viagra info domain buy onlin Pfizer viagra sperm Vidarabine Cheapest viagra price Prevacid Viagra cialis levitra comparison Dutasteride Lisinopril Thiotepa Female spray viagra Black market phentermine Betamethasone Cialis forums What does xanax look like Loss phentermine story success weight Order xanax overnight Viagra alternative uk Diet online phentermine pill Order xanax cod Mecamylamine Eulexin Cheap hydrocodone Buy cheapest viagra Viagra xenical Phentermine with no prior prescription Xanax in urine Macrodantin Cheap phentermine with online consultation Epivir Buy phentermine epharmacist Ditropan Woman use viagra Cialis erectile dysfunction Xanax withdrawl message boards Viagra online store Atorvastatin Generic ambien Is phentermine addictive Next day delivery on phentermine Buy online viagra Ethanol Natural phentermine Avandamet Xanax long term use Diet page phentermine pill yellow 5 cheap Cheapest secure delivery cialis uk Information medical phentermine Cialis experience Phentermine no perscription Compare ionamin phentermine Viagra cialis levivia dose comparison Noroxin Effects of viagra on women Buy cheap cialis Viagra shelf life Hydroxyurea Phentermine discount no prescription Buy cheap online viagra Dog xanax Online cialis Viagra class action Viagra price Phentermine without prescription and energy pill Hydrocodone cod only Nicoumalone Cheapest viagra Cheap ambien Vicodin without prescription Phentermine prescription online Phentermine snorting Mirtazapine Quazepam Isradipine Buy generic viagra online Xanax look alike Moxifloxacin Viagra experiences Piroxicam Nicorette Free try viagra Sotalol Cash on delivery shipping of phentermine How do i stop taking phentermine Xanax prescriptions Cheapest phentermine 90 day order Niacinamide Phentermine weight loss Phentermine


19:28:00, Flash-ripper.com
Кто дежурит? 40 лучших флэш проектов рунета!

На сайте Дежурка.ру иногда выкладывают интересные статьи про флэш и веб-дизайн. Так, совсем недавно мы писали о конкурсе «Russian Flash Awards 2008» (RFA), а на Дежурке в статье «40 лучших флэш-проектов рунета» вы найдете обзор всех работ, вышедших в финал этого конкурса — в каждой из номинаций. Кстати, а начинающим флешерам будет полезна статья «Обзор флэш прелоадеров», в которой содержится большая подборка решений для загрузчиков.
Приятного просмотра =)


14:13:23, Flash-ripper.com
Взрослая настройка MySQL, установка Eclipse на Linux, Империя Добра

Блог "Web Applications Scalability" продолжает выдавать качественные материалы, достойные пристального внимания как уже заматеревших, так и только начинающих заматеревать Флексоидов, Эклипсоидов и Линуксоидов.

В "Установке Eclipse на Linux" рассказывается об установке Eclipse на Linux 32bit. 64-битную версию пока не трогают, зато об установке под 32 бита рассказано все — четко и лаконично.

Статья же "MySQL-тюнинг. Настраиваем по-взрослому" — труд просто монументальный. Из достоверных источников известно, что писал это человек, не понаслышке познавший крупные сетевые приложения и занимающийся разработкой одного из них прямо сейчас. "Мало кто знает, что правильно настроенный MySQL может работать в 10-100 раз быстрее своего неоптимизированного собрата из базовой установки" — пишет он.

Это высоко рекомендуемые материалы для серьезных людей, как и статья об Империи Добра от талантливого писателя. Ее рекомендуется читать на пятой ступени сознания, и отнестись критически к приведенным там острым высказываниям — однако и на ус будет что намотать.


11:27:25, 33 коровы
Безумная оптимизация

Много об оптимизации писали эти люди:

http://gorbatov.blogspot.com/2008/03/as3.html

http://blog.je2050.de/2008/04/26/actionscript-3-optimization-techniques/

http://www.bit-101.com/blog/?p=1271

способы правда повторяются, но это очень полезно!

Я лишь добавлю свои 5 копеек, как сделать код запутаным, но чуть быстрее).

Мой извращеный способ основывается на таком предположении:
У нас есть метод который вызываеться много много раз, данный метод внутри себя использует для каких-то действий локальные переменные. Так вот почему бы не “спускать” эти переменные сверху.

public function test(p:Point, i:int) : void
…..
var p:Point = new Point();
test(p,0);

Например у меня в реальном методе используется 2 точки и небольшой цикл )

пример, исходный код

посмотреть:






реально подойдет для гейм дева или где можно принебречь читаемостью кода ради быстроты)

upd редактор вордпресса унылое какашко(ТМ)


10:56:38, Flash-ripper.com
Параллельная работа - Acrobat.com

В первый день лета 2008 года Acrobat.com вышел в онлайн. Сутью данной разработки является интеграция нескольких мощных сервисов от Adobe: Онлайновый текстовый редактор BuzzWord + коммуникатор ConnectNow + 5GB места для зашаривания ваших файлов — все это уже сейчас доступно за умеренную плану в ноль денег (стоп. пока не доступен ConnectNow, но будет скоро). Также есть Acrobat.com AIR App для драг-н-дропа файлов между вашим десктопом и вашим эккаунтом на Adobe.com (это приложение будет сильно развиваться).

Рекомендую почитать официальную новость на Хабре — там масса непредвзятых комментариев, местами очень дельных.

Прокомментирую от себя. Похоже, Адоб читает мои мысли. Недавно я подумал, что неплохо было бы иметь под рукой тул для быстрой коммуникации с клиентами, и вот он уже у нас в руках.

По поводу возможной рекламы хорошо сказанов официальной новости в блоге Acrobat:

"...по поводу того, собираемся ли мы встраивать рекламу в Acrobat.com. Коротко говоря, это не наш план на сегодня. Adobe построил хороший бизнес, продавая софт, и мы планируем продолжать в этом же духе с услугами типа софт как сервис через Acrobat.com."

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

Инструменты для лентяев, ага ;)

А еще это — грандиознейшая (по моим соображениям) обкатка Flex SDK.


04:37:30, WebService //Flash
Демонстрация 3D поверхностей с помощью движка Alternativa3D

Товарищи из проекта “Alterantiva Platformпредлагают зарегистрироваться на сайте и бесплатно скачать библиотеку Alternativa3D для использования в некоммерческих целях. Что я и сделал. И даже “нарисовал” первую свою демку. Вот, предлагаю на Ваш суд “Демонстрация 3D поверхностей с помощью движка Alternativa3D” :

Кстати говоря, Flash Player 10 в этой демке работает на-а-амного шустрее. Отвечаю.

Tags: , , , , ,


2008-06-02

10:28:00, Flash-разработка
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":

  • Путь к файлам Alternativa3D/Alternativa3D.swc
  • Путь к файлам Alternativa3D/AlternativaTypes.swc
  • Путь к файлам Alternativa3D/AlternativaUtils.swc

2. Создаем файл HelloAlternativa3D.as, указываем ему "Always Compile" и копируем в него код примера.

3. Компилируем и запускаем. Всё работает без проблем, как и в примере на сайте. На первый взгляд всё просто. Побаловались с разными параметрами и почитали аннотации к коду. Примерно начинает складываться общая картинка. Любопытно было поэксперементировать с количеством сегментов куба. Первое желание - выставить их побольше и посмотреть, как это подвесит FP. Приятно удивило, что, к примеру, поставив их по 20 на каждое измерение, FP по началу явно подвис, но потом, видать, что-то сгенерилось и всё заработало достаточно быстро. Но 30 сегментов FP уже не стерпел...

По аналогии с первым смотрим два других урока. Писать тут особенно нечего - всё достаточно подробно изложено. Теперь от баловства надо переходить к делу. Только для начала нужно уточнить условия использования Alternativa3D в коммерческих целях.

В отличии от PaperVision3D, это не OpenSource, со всеми вытекающими последствиями. И значит открыт вопрос использования продуктов на базе альтернативы не в личных целях.

Ну вот, мы немножко пощупали (а сказать по честному, пока лишь едва ущипнули) этого мистического зверя, и хочется верить, что мы на нем еще ух как покатаемся!


06:41:57, Flash-ripper.com
Скачать движок Alternativa 3D и проверить его в работе

AlternativaPlatform

Итак, на сайте AlternativaPlatform.com появилась возможность скачать и попробовать в действии новый 3D-движок (уже адаптированный к Flash Player 10). Для этого нужно сначала зарегистрироваться, а затем войти под своим логином на страницу движка Alternativa 3D и скачать его оттуда в виде SWC-библиотеки.

Для некоммерческого использования Alternativa3D отдается бесплатно — только разместите ссылку на AlternativaPlatform в своем приложении (она не появится там автоматически — это вопрос лично ваших уровня профессионализма и уважения к братьям по цеху).

Обратите внимание: уроки по движку Alternativa 3D

Начиная с простейшего классического примера вращения куба "Hello, Alternativa3D!", проходя через урок по построению геометрии дома, и включая работу с материалами и UV-координатамиразработчики движка объясняют, как пользоваться их творением.

Я попробовал первый уроктаки работает, см. под катом.


2008-06-01

17:36:37, Flash-ripper.com
AlternativaPlatform.com — сеть уже не будет такой, как прежде

Если вы не верите, что русские разработчики способны удивить мир своим профессионализмом — наблюдайте за свежеоткрытым сайтом AlternativaPlatform.com.

На этом ресурсе нас ждет масса сюрпризов — уже скоро мы станем свидетелями яркого взлета.

Итак, Платформа состоит из 3 частей: Alternativa 3D — браузерный 3D-движок на базе Adobe Flash, AlternativaGUI — содержит все основные элементы интерфейса и AlternativaCore — система многопользовательских серверов.

К ним уже есть Доки, Багтрекер и Форум — и будет больше. Главное начинается только сейчас!


2008-05-30

17:27:00, Flash-разработка
Хороший стиль 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 и т.п., правила сильно не изменятся.


17:11:41, Flash-ripper.com
Если 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) Зарегистрироваться или быть уже зарегистрированным.
2) Перейти на страницу этого бага и нажать там ссылку "Vote" в меню, слева.


13:22:00, Flex 2 & Co
Пример динамического наложения двух mp3
Поигрался с примером Tinic Uro по поводу новых методов класса Sound, в частности, extract():
function extract(target:ByteArray,
length:Number,
startPosition:Number = -1 ):Number;

  • target - ByteArray, в который помещаются извлеченные сэмплы (samples);
  • length - количество сэмплов. Сэмпл содержит левый и правый каналы, каждый из которых представляет числа с плавающей точкой.
  • startPosition - позиция, с которой начнется извленение. Если она не указана, то извлечение будет идти с начала.
  • extract() - возвращает количество сэмплов, но оно может быть меньше запрошенной длины в самом конце звука.
Вот немного переделанный пример того, как можно наложить два звука друг на друга:


package
{
import flash.display.Sprite;
import flash.events.*;
import flash.media.*;
import flash.net.URLRequest;
import flash.utils.ByteArray;

public class SoundTest extends Sprite
{
private var mp3sound0:Sound = new Sound();
private var mp3sound1:Sound = new Sound();
private var dynamicSound:Sound = new Sound();
private var samples0:ByteArray = new ByteArray();
private var samples1:ByteArray = new ByteArray();

public function SoundTest()
{
mp3sound0.addEventListener(Event.COMPLETE, loadComplete0);
mp3sound0.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
//загрузка первого файла
mp3sound0.load(new URLRequest("sound0.mp3"));
}

private function loadComplete0(event:Event):void
{
mp3sound1.addEventListener(Event.COMPLETE, loadComplete1);
mp3sound1.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
//загрузка второго файла по событию загрузки первого
mp3sound1.load(new URLRequest("sound1.mp3"));
}

private function onIOError(e:IOErrorEvent):void
{
trace(e.text);
}

private function loadComplete1(event:Event):void
{
//начало динамического наложения звуков
dynamicSound.addEventListener("samplesCallback",samplesCallback);
dynamicSound.play();
}

private function samplesCallback(event:SamplesCallbackEvent):void
{
//установка массивов на нулевую позицию
samples0.position = 0;
samples1.position = 0;
var len:Number = 1000;
//извлечение сэмплов в массивы
mp3sound0.extract(samples0, len);
mp3sound1.extract(samples1, len);
//установка массивов на нулевую позицию
samples0.position = 0;
samples1.position = 0;
for (var c:int = 0; c < len; c++)
{
//получение значение каналов и их сложение
var left:Number = samples0.readFloat() + samples1.readFloat();
var right:Number = samples0.readFloat() + samples1.readFloat();
//запись значений в объект динамического звука
dynamicSound.samplesCallbackData.writeFloat(left);
dynamicSound.samplesCallbackData.writeFloat(right);
}
}
}
}

13:22:00, Flex 2 & Co
Пример динамического наложения двух mp3
Поигрался с примером Tinic Uro по поводу новых методов класса Sound, в частности, extract():
function extract(target:ByteArray,
length:Number,
startPosition:Number = -1 ):Number;

  • target - ByteArray, в который помещаются извлеченные сэмплы (samples);
  • length - количество сэмплов. Сэмпл содержит левый и правый каналы, каждый из которых представляет числа с плавающей точкой.
  • startPosition - позиция, с которой начнется извленение. Если она не указана, то извлечение будет идти с начала.
  • extract() - возвращает количество сэмплов, но оно может быть меньше запрошенной длины в самом конце звука.
Вот немного переделанный пример того, как можно наложить два звука друг на друга:


package
{
import flash.display.Sprite;
import flash.events.*;
import flash.media.*;
import flash.net.URLRequest;
import flash.utils.ByteArray;

public class SoundTest extends Sprite
{
private var mp3sound0:Sound = new Sound();
private var mp3sound1:Sound = new Sound();
private var dynamicSound:Sound = new Sound();
private var samples0:ByteArray = new ByteArray();
private var samples1:ByteArray = new ByteArray();

public function SoundTest()
{
mp3sound0.addEventListener(Event.COMPLETE, loadComplete0);
mp3sound0.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
//загрузка первого файла
mp3sound0.load(new URLRequest("sound0.mp3"));
}

private function loadComplete0(event:Event):void
{
mp3sound1.addEventListener(Event.COMPLETE, loadComplete1);
mp3sound1.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
//загрузка второго файла по событию загрузки первого
mp3sound1.load(new URLRequest("sound1.mp3"));
}

private function onIOError(e:IOErrorEvent):void
{
trace(e.text);
}

private function loadComplete1(event:Event):void
{
//начало динамического наложения звуков
dynamicSound.addEventListener("samplesCallback",samplesCallback);
dynamicSound.play();
}

private function samplesCallback(event:SamplesCallbackEvent):void
{
//установка массивов на нулевую позицию
samples0.position = 0;
samples1.position = 0;
var len:Number = 1000;
//извлечение сэмплов в массивы
mp3sound0.extract(samples0, len);
mp3sound1.extract(samples1, len);
//установка массивов на нулевую позицию
samples0.position = 0;
samples1.position = 0;
for (var c:int = 0; c < len; c++)
{
//получение значение каналов и их сложение
var left:Number = samples0.readFloat() + samples1.readFloat();
var right:Number = samples0.readFloat() + samples1.readFloat();
//запись значений в объект динамического звука
dynamicSound.samplesCallbackData.writeFloat(left);
dynamicSound.samplesCallbackData.writeFloat(right);
}
}
}
}

12:50:14, Flash-ripper.com
В этом году «Russian Flash Awards» пройдет в «космическом стиле»

Russian Flash Awards 2008Интересное совпадение: организаторы 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» является одним из знаковых событий в мире информационных технологий и искусства — верна.


12:04:00, Flash-разработка
Хороший стиль Flex-программирования. Форматирование

Здесь речь пойдет о том, как лучше оформлять файлы Flex-фреймворка. Статья Formatting.

Форматирование

Длина строки

Используйте перенос на следующую строку, если длина строки превышает 80 символов. Это дает следующие преимущества:

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

Отступы

Используйте отступы в 4 пробела. Настройте редактор так, чтобы вместо символа табуляции вставлялись символы пробелов. Это необходимо для того, чтобы в код выглядел без искажений в программах с другой системой формирования отступов. Например Notepad отображает отступы в 8 символов.

Разделительные блоки

Код необходимо разбивать на разделы, а полученные разделы - озаглавливать. Для этого используйте большой и малый разделители.

Большой разделитель выглядит следующим образом:

//--------------------------------------------------------------------------
//
// Overridden methods
//
//--------------------------------------------------------------------------

Блок большого разделителя начинается с 4-го символа строки и заканчивается на 80-м. Текст начинается с 8-го символа.

Малый разделитель выглядит следующим образом:

//----------------------------------
// visible
//----------------------------------

Блок малого разделителя начинается с 4-го символа строки и заканчивается на 40-м. Текст начинается с 8-го символа.

Необходимо вставлять одну пустую строку до и одну после каждого разделителя.

Разделение блоков объявления

Используйте одну пустую строку для разделения блоков объявления констант, переменных, функций:
/**
* @private
* Holds something.
*/
var a:Number;
/**
* @private
*/
var b:Number

Метаданные

можно: Inspectable[a="1", b="2"]
нельзя: Inspectable[a=1 b=2]

Индексирование массивов

Не ставьте пробелы:
- до или после левой квадратной скобки,
- перед правой квадратной скобкой.

можно: a[0]
нельзя: a [ 0 ]

Расстановка запятых

После запятой, оставляйте один пробел. Это правило распространяется на список аргументов, элементы массива, свойства объекта.

Массивы

Ставьте один пробел:
- после левой квадратной скобки,
- перед правой квадратной скобкой,
- после каждой запятой.

можно: [ 1, 2, 3 ]
нельзя: [1, 2, 3] [1,2,3]

Исключение составляет только пустой массив:
можно: []
нельзя: [ ]

Если строка инициализации массива слишком длинна, разбивайте ее на несколько строк с выравниванием квадратных скобок:

static var numberNames:Array /* of String */ =
[
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
];

Объекты

Ставьте один пробел:
- после левой фигурной скобки,
- перед правой фигурной скобкой,
- после каждого двоеточия,
- после каждой запятой.

можно: { a: 1, b: 2, c: 3 }
нельзя: {a: 1, b: 2, c: 3} {a:1, b:2, c:3} {a:1,b:2,c:3}

Исключение составляет только пустой массив:
можно: {}
нельзя: { }

Если строка инициализации объекта слишком длинна, разбивайте ее на несколько строк с выравниванием квадратных скобок:

private static var TextStyleMap:Object =
{
color: true,
fontFamily: true,
fontSize: true,
fontStyle: true,
fontWeight: true,
leading: true,
marginLeft: true,
marginRight: true,
textAlign: true,
textDecoration: true,
textIndent: true
};

Функции

Пример форматирования:

var f:Function;
f = function():void
{
doSomething();
};

Объявление типов

Не ставьте пробелы до и после двоеточия, которое разделяет имя переменной, параметра, или функцию от типа.

можно: var n:Number;
нельзя:
var n : Number;
var n: Number;

можно: function f(n:Number):void
нельзя:
function f(n : Number) : void
function f(n: Number): void

Использование пробелов в операторах

Ставьте пробелы до и после оператора присваивания:
можно: a = 1;
нельзя: a=1;

Ставьте пробелы до и после инфиксного оператора:
можно: a + b * c
нельзя: a+b*c

Ставьте пробелы до и после оператора сравнения:
можно: a == b
нельзя: a==b

Не ставьте пробел между префиксным оператором и операндом:
можно: !o
нельзя: ! o

Не ставьте пробел между операндом и постфиксным оператором:
можно: i++
нельзя: i ++

Операторы

Начинайте каждый оператор с новой строки. Это дает возможность установить контрольную точку (breakpoint) на любой из операторов.
можно:
a = 1;
b = 2;
c = 3;
нельзя:
a = 1; b = 2; c = 3;

Всегда выравнивайте фигурные скобки блоков операторов:
можно:

function f():void
{
var n:int = numChildren;
for (var i:int = 0; i < n; i++)
{
if ()
{
x = horizontalGap * i;
y = verticalGap * i;
}
}
}

Нельзя:

function f():void {
var n:int = numChildren;
for (var i:int = 0; i < n; i++) {
if () {
x = horizontalGap * i;
y = verticalGap * i;
}
}
}

Объявление функций

Ставьте один пробел после каждой запятой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой:
можно: f(a, b)
нельзя: f(a,b) f( a, b )

Если список параметров переносится на другую строку, перенесенные строки должны иметь отступ на уровне первого параметра после левой скобки. Можно располагать несколько параметров на одной строке, только если они умещаются. В ином случае, располагайте каждый параметр на отдельной строке. Если четный параметр не умещается, перенесите первый параметр на следующую строку с отступом на уровне начала имени функции.


public function foo(parameter1:Number, parameter2:String,
parameter3:Boolean):void

public function foo(parameter1:Number,
parameter2:String,
parameter3:Boolean):void

public function aVeryLongFunctionName(
parameter1:Number, parameter2:String,
parameter3:Boolean):void

Вызов функций

Ставьте один пробел после каждой запятой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой:
можно: f(a, b)
нельзя: f(a,b) f( a, b )

Оператор if

Ставьте пробел между ключевым словом if и левой скобкой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой:
можно: if (a < b)
нельзя:
if(a < b)
if( a < b )
if ( a < b )

Оператор for

Ставьте пробел между ключевым словом for и левой скобкой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой:
можно: for (var i:int = 0; i < n; i++)
нельзя:
for(var i:int = 0; i < n; i++)
for( var i:int = 0; i < n; i++ )
for ( var i:int = 0; i < n; i++ )

Если описание цикла переносится на другую строку, перенесенные строки должны иметь отступ на уровне первого символа после левой скобки:


for (var aLongLoopVariableName:int = aLongInitialExpression;
aLongLoopVariableName < aLongUpperLimit;
aLongLoopVariableName++)

Оператор switch

Ставьте пробел между ключевым словом switch и левой скобкой. Никогда не ставьте пробелов после левой скобки и перед правой скобкой:
можно: switch (n)
нельзя:
switch(n)
switch( n )
switch ( n )

Комментарий

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

В основном, всё логично и выполнимо. Последний FlashDevelop успешно реализует эти правила в своем автокомплите. Теперь стало ясно, почему они так резко изменили политику расстановки фигурных скобок функций, а именно, перенос левой фигурной скобки на следующую строку. Честно говоря, я с этим переносом намучался, поскольку при переходе на стиль форматирования FlashDevelop, я специально переучивался оставлять левую скобку на строке с определением функции. А тут вдруг огорошили... И опять возвращаться к прежнему формату.

Ну всё. Следующий проект начинаю правильно форматировать.

Кстати, о проектах, которые сделаны в старом (не по правилам) формате. Часто приходится к ним возвращаться, дорабатывать, улучшать. Но уже трудно работать по-старому. Как тут быть? На переформатирование времени тратить не хочется. Где взять такой реформатер??!

Пока для себя я держу правило - работать в контексте стиля программирования дорабатываемого кода. Мой это код или чужой - всё равно следовать правилам текущего документа.
Если проект важный, в итоге будет выделено время на рефакторинг и всё само собой встанет на места.
Если проект чужой - он, вероятно, попадет обратно к автору, а тот лучше поймет что ему делать со своими или не своими (но похожими :) ) каракулями.

Остался маленький "хвостик" про ASDoc, который мы сейчас и разберем.


2008-05-29

21:57:00, DL1t's blog
Нет в жизни счастья: новые проблемы для Flash Player

Не успели мы обрадоваться выходу апдейта безопасности 9ого плеера, как снова начались проблемы…
В новом плеера обнаружена уязвимость, которая уже активно используется. “SecurityLab рекомендует всем пользователям отключить Flash Player до выхода исправления”.
А для полной радости осталось только узнать, что Firefox 3 некорректно работает с частью flash контента, а конкретно с onKeyUp, и эта проблема, похоже, не будет исправлена в релизе, а только в последующих апдейтах. С учетом популярности данного браузера новость, мягко говоря, не радует.


18:58:31, Flash-ripper.com
В проект MoeKorolevstvo.ru требуется АС3 программист, Москва

Параметры:

  • Москва, метро Курская.
  • 9-часовой рабочий день, удаленка не рассматривается.
  • предлагают 75 т. р., уточняют по результатам общения.
  • начало работы — июль 2008.
  • Работа в связке с Михаилом Антипиным, программирование игровой механики.

Подробности: Игра на данный момент работает в режиме закрытой беты; вы можете запросить приглашение, обозначив, откуда пришли.

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

Если ко всему этому вы интересуетесь игростроением и игровым фольклором, знаете, чем orc отличается от ork, откуда взялась фраза "Dopefish Lives!" и умеете колонизировать незнакомые планеты — это большой плюс.

Далее — почта для прямой связи и перспектива работы в хорошей компании.

Только что заново понял фразу "работа в хорошей компании". Это когда работаешь вместе с хорошими людьми.


Предыдущие 30 | Следующие 30