Flex и RIA блоги



2008-02-17

23:01:00, Flash-разработка
3-я встреча RAFPUG. Рабочие будни
Сегодня забежал на пару часиков на третью встречу Российских Пользователей Адоби-Флэш-платформы.

Задержаться до конца не позволили обстоятельства, ибо, потратить личное время в выходные - слишком большая жертва для семейного человека, работающего пять дней в неделю 8 часов вне дома, а то и дома по вечерам (Эх, в будни бы проводили с утреца и хоть до самого вечера).

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

Начал встречу, как всегда, Артемий, и анонсировал проект Adobe и иже с ним - портал Flashawards - несколько кривовато работающий, но вполне симпатичный, посвященный Первому профессиональному flash-конкурсу в России. Для начала, нашему вниманию был представлен призванный вдохновить всех флэшеров, забавный видео-ролик с зомбирующим образом быстро сменяющимися кадрами под чудесную музыку Save the Robots (Members Of Mayday), представляющий работы победителей предыдущего конкурса. Затем были вручены подарочки (обещаные на второй встрече) и Артемий обмолвился о скором выходе 3го FlexBuilder!

Цель моего сегодняшнего визита - послушать доклад Александра Козловского "Простой путь создания трёхмерного AIR приложения". Анонс был настолько завлекателен, что, казалось, только ради одного этого доклада стоило сорваться - анонсировалось и Papervision3D и создание AIR-приложения.

Я не буду обсуждать сам доклад - не имею такого права, т.к. сам не набрался сил и смелости что-либо вообще подготовить и докладывать.
В ходе доклада довольно подробно было продемонстрировано создание AIR-приложения и несколько поверхностно - использование Papervision3D.

Основные (лично для меня) моменты по созданию AIR приложения:
  1. Конфигурирование AIR-приложения. Все настройки хранятся в файле PROJECTNAME-app.xml. Важные для нас теги:
    filename - имя генерируемого файла.
    name - имя приложения (ВНИМАНИЕ - оно где-то в конце файла дублируется, что может вызвать недопонимание в процессе отладки).
    visible - будет ли видимым главное окно после старта.
    И другие - аналогично - пояснения есть для каждого в комментариях.
  2. Если нам нужно приложение в виде окна с тулбаром и тому подобными примочками, мы наследуем главный класс нашего приложения от mx.WindowedApplication. Если же нам всё это не нужно и мы хотим отсутствия всякого фона между нашей графикой и десктопом - просто от mx.Application.
  3. Создание tray-иконок для Windows и Apple платформ отличается. Если в Windows это место называется tray, то в Apple - это Dock. Соответственно, Александр предлагает нам проверять такие параметры как NativeApplication.supportsDockIcon и NativeApplication.supportsSystemTrayIcon. Затем, используя класс NativeMenu и иже с ним, мы создаем меню. ВАЖНО: Иконку лучше убирать принудительно, т.к. операционная система не всегда это делает самостоятельно. Для этого достаточно сделать NativeApplication.icon.bitmaps=[];.
  4. Для доступа к главному окну, используем SystemManager.Stage.NativeWindow.
  5. Для отлова Drag'n'Drop нам понадобятся события для ViewPort3D:
    NATIVE_DRAG_ENTER - вход мыши с драг'н'дроп-содержимым.
    NATIVE_DRAG_DROP - отпускание мыши с драг'н'дроп-содержимым.
    Кроме того, пользуется событие ADDED_TO_STAGE для инициализации.
  6. Важное замечание по Drag'n'Drop: используя объект события NativeDragEvent.Clipboard.getData(); можно получить переданное драг'н'дроп-содержимое. Дело в том, что при Drag'n'Drop-перетаскивании, данные складируются в буфере Clipboard, хотя, при этом данные, запомненные, к примеру, по Contrl+C не теряют своей актуальности.
  7. Сохранение файла:
    Stream=new FileStream();
    f=new File(File.applicationDirectory.nativePath+'...'); Где File.applicationDirectory.nativePath - текущая директория исполняемого приложения.
    Stream.open(f, FileMode.WRITE);
    Stream.WriteMultiByte("...data...");
    Stream.close();

По Papervision3D следующие заметки:

  1. Основные компоненты, которые необходимо создать и инициализировать: BasicRendererEngine - движок.
    Viewport3D - наследник Sprite для рендера изображения.
    Другие объекты - Scene3D, Camera (Camera.target - устанавливает объект, за которым будет наблюдать камера)

Другие заметки:

  1. Для прелоадера/сплэш-скрина используем объект-потомок ProgressBar. По окончании загрузки, диспатчим событие COMPLETE, после чего приложение Application получит событие PRELOADER_DONE.
  2. Для обновления приложения используем класс Updater. Класс выполняет лишь следующую функцию - сообщает AIR, что необходимо после закрытия приложения обновить его. Александр предложил самостоятельно скачивать и обновлять приложения с использованием библиотек ZIP-архивации.

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

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

В итоге, впечатление от встречи однозначно - Коллеги, хватит веселиться - настало время потрудиться. Наступили рабочие будни.


2008-02-16

20:33:39, Лаборатория Январева
Пощупать Флекс или Hands-on на RAFPUG-3

Буквально 5 минут назад прочитал последний вариант программы RAFPUG-3. В программе предусмотрен Hands-on для флешеров, которые хотят “пощупать” Flex.

Хочу внести свои пять копеек: я планирую приехать с ноутом, и буду в этот момент показывать всякие свои наработки в области флекса. О себе: юзаю AMFPHP и собственный небольшой фреймворк. Можно просто подсаживаться и смотреть.

Если никому не будет интересно, буду просто сидеть, работать или смотреть, как осваивают Flex другие :)

До встречи!


2008-02-15

22:11:59, Скачать флешки, флеш, бесплатные Flash уроки и исходники. Создание сайтов.
LocalConnection, или как вызвать из одной флешки функцию другой

Flash урок по Local Connection. Скачать флеш исходник, урок, пример

Вопрос:

Здравствуйте снова. У меня следующий вопрос или скорее даже просьба: Все никак не могу врубиться в класс LocalConection. Как им пользоваться? Искал разные способы уже опубликованные кем-то где-то на форумах - вставлял свои имена в коды, но ничего не работало. Мне нужно заставить пересылать команды из одного swf в другой, находящихся на одном сайте. Буду примного благодарен за объяснение. И если вам не трудно - пример с кодом ).

Ответ:

Здраствуйте… Каюсь, боюсь вам больше не нужна моя помощь, так как вопрос был задан 06.02.2008 г., а сегодня уже 16 число, этого же месяца, целых 10 дней прошло, мало ли что могло случиться, и вам, может быть, сейчас совсем не до флешек и каких-то там Local Connection во Flash, но всё-таки, сегодня родил я перед сном пример c уроком и даже исходником для вас, может чем-то и поможет =)

Продолжение тут »

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong Linkstore.ru

17:26:17, Flash-ripper.com
KnockaTV идет к праотцам: странный финал хорошего начала

Совсем свежая история закрытия видеосервиса KnockaTV как бы говорит нам: неприятности могут случиться с любым стартапом — хоть в рунете, хоть вне его. Не только начинающие, но и опытные в сетевых технологиях основатели бизнеса могут ошибиться. А среди основателей этого сервиса замечены люди, причастные к созданию и продаже ICQ.

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

Подробности истории неизвестны ("ведется расследование" :). Но один вывод я делаю уже сейчас: не стоит сильно ругать молодые стартапы. Как видите, и на старуху бывает проруха. И далеко не всегда успех проекта напрямую зависит от разработчиков.


15:32:45, Flash-ripper.com
ChirpScreen — социальный скринсейвер, сделан на Flex

Когда-то я подписался на бета-тестирование нового скринсейвера от Chirp. Авторы обещали сделать интересное приложение, являющееся не просто скринсейвером, но интерактивным просмотрщиком фотографий и сообщений. Во время простоя машины приложение отображает слайдшоу из фото и месседжей, собранных с ваших контактов в разных социальных сетях и фотосервисах, например, Facebook и Flickr.

Затем приложение было создано. Первую фазу бета-тестирования я пропустил из-за занятости, а вчера мне пришло письмо от Chirp с благодарностью бета-тестерам и отчетом об уже реализованных пожеланиях тестировщиков, включая расширение функциональности как интерфейса пользователя, так и интерфейса взаимодействия с "социальным облаком": например, теперь можно подключиться еще и к сервису микроблоггинга Twitter. Фотки можно комментировать не сходя с места, можно блокировать нежелательных пользователей и т.п. Я скачал приложение, попробовал его и получил приятный шок.

Chirp сделан хорошо. Но как изящна сама идея этого социального скринсейвер-сервиса: вы пьете кофе и смотрите фото и сообщения своих друзей, вам не нужно кликать. По сути, это социальный проигрыватель. Информация от ваших контактов неспешно проплывает по экрану, и любой заинтересовавший вас элемент можно остановить, переместить, откомментировать или просто удалить. Фишка в том, что Чирп автоматизирует именно то, что стоит автоматизировать: блуждание по вашим контактам. Чирп водит вас по социальному облаку, но как только захотите — можете взять управление в свои руки.

Скачать Chirpscreen и получить 100 очков юзер экспириенса.


14:53:15, Constantiner's blog
Третий конкурс Russian Flash Awards

Russian Flash Awards LogoКстати, буквально вчера стартовал третий конкурс Russian Flash Awards. Если кто не в курсе, то Russian Flash Awards - это первое в России (и, насколько я понимаю, вообще на русскоязычном пространстве) начинание подобного рода.

Старт же конкурса означает начало приёма работ. В этом году введены две новые категории: Flex и AIR. В качестве AIR-приложений принимаются только те, которые содержат swf-файл в качестве корневого документа (конкурс ведь посвящён Flash-платформе!).

Данный проект является некоммерческим. В жюри вошли различные фигуранты Flash-процесса, числом десять человек, в том числе глава российского представительства Adobe Павел Черкашин, что придаёт мероприятию дополнительный интересный статус.

Основное требование к работам (помимо направленности на Flash-платформу) - русскоязычность проекта. Конкурс-то наш, отечественный.

Работы принимаются до 30 апреля 2008 года. Победители станут известны 15 мая того же года.

Победитель лучшего проекта в номинации Flex или AIR поедет на ближайший европейский MAX, что, в общем-то, круто.

Остальная информация доступна на сайте Russian Flash Awards. Изучаем и отсылаем работы.

Движуха! :)

PS. Кстати, год назад наши девчонки Junique и Graann победили в этом конкурсе в номинации «Техническая заслуга» :)


2008-02-14

15:01:15, Flash-ripper.com
Flex для начинающих. Для совсем начинающих — нужны ссылки!

Еще один из самых FAQ-овых вопросов: с чего начать изучение Flex? Люди, совершающие самые первые шаги во Flex, интересуются простейшими примерами.

Обычно я рекомендую обращаться за помощью в группу ruFlex. Но хочется также давать ссылки на статьи типа "мое первое Flex-приложение" или "Флекс для Флэшеров" И прежде, чем писать статью на тему "флекс с самого начала", я хотел бы спросить у вас — может быть, есть готовые ссылки, которыми мы сможем делиться с начинающими, в том числе и на русском? Давайте поделимся!


14:01:41, Flash-ripper.com
Все что Майкл Клишин написал про Flex — и не только

У меня часто спрашивают: Рост, есть ли у тебя архив старого сайта Novemberain.com?

Конечно, у меня есть архив блога Майкла Клишина, причем он всегда под рукой. Вот посты Майкла Клишина в категории 'Flex' состоянием на 9 февраля 2007 года. А вот вообще весь его блог за указаный период.

Архивы всех сайтов есть у всех нас благодаря великолепному сервису web.archive.org.


13:39:00, Flash-разработка
Установка перменных объектов. Server Side API. SmartFoxServer

Основные объекты SmartFoxServer (room и user) могут сохранять и возвращать переменные. Как они возвращают переменные мы уже видели здесь и здесь.
Для того, чтобы установить переменные, необходимо вмешательство главного управляющего класса _server.

Следующие методы позволяют устанавливать/удалять переменные:

_server.setRoomVariables(room, who, varList, setOwnership, sendUpdate)
Устанавливает переменную(ые) комнаты.
room - объект Room комната, переменные которой устанавливаются.
who - объект User пользователя, который производит установку. null - установка от имени сервера.
varList - массив, состоящий из объектов, характеризующих переменную:
name - имя переменной
val - значение переменной. Если установить undefined (а можно null ?) переменная будет удалена.
priv - приватная или нет
persistent - постоянная или нет (если постоянная - не удалится, если пользователь перейдет в другую комнату. Но после его отключения - удалится)
setOwnership - если false - не позволит изменить хозяина переменной (того кто ее создал). true по умолчанию.
sendUpdate - если false, пользователи комнаты не будут извещаться о происшедшем изменении. true по умолчанию.

_server.setUserVariables(who, varList, sendUpdate)
Устанавливает переменную(ые) пользователя.
who - объект User пользователя, который производит установку. null - установка от имени сервера.
varList - объект (ассоциативный массив) содержащий переменные ([имя]=значение). Если значение установлено в undefined - переменная удаляется.
sendUpdate - если false, пользователи комнаты не будут извещаться о происшедшем изменении. true по умолчанию.

_server.setBuddyVariables(user, variables)
Установить переменные друга. Генерирует событие onBuddyListUpdate.
user - объект User пользователя-хозяина переменных.
variables - ассоциативный массив переменных.

* * *

Как показала практика, нельзя сохранить переменную-массив. Она просто не сохраняется. По-видимому нельзя сохранить и объект. Поэтому, для хранения, нужно сериализовать массивы в строки.


01:52:00, Flex 2 & Co
E4X запросы с учетом namespace'ов
Допустим у нас есть некий XML (например, rss поток):
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<item>
<title>News feeds from the BBC</title>
<description></description>
<link>http://news.bbc.co.uk/go/rss/-/1/hi/help/rss/3223484.stm</link>
<guid isPermaLink="false">http://news.bbc.co.uk/1/hi/help/rss/3223484.stm</guid>
<pubDate>Mon, 21 Aug 2006 08:34:42 GMT</pubDate>
<category>RSS</category>
<media:group>
<media:category>RSS</media:category>
<media:copyright>(C) British Broadcasting Corporation</media:copyright>
</media:group>
</item>
</channel>
</rss>
Чтобы получить данные тегов из пространства имен media необходимо поступить следующим образом:

1) создать пространство имен
var media:Namespace = new Namespace("http://search.yahoo.com/mrss/");

2) обращаться к необходимым узлам с использованием этого пространства имен
var copyright:String = xml.channel.item.media::group.media::copyright.text();

3) Ответ верный:
(C) British Broadcasting Corporation

2008-02-13

19:32:44, Flash-ripper.com
PDFMeNot - флэш-сервис для просмотра и показа PDF онлайн

Создатели BugMeNot радуют нас новым сервисом — PDFMeNot. С его помощью вы можете смотреть сетевые и локальные PDF-файлы, а также показывать их на своем сайте.

Пользуясь возможностью, покажу вам отличный документ от Эли Гринфилда на тему правильного создания Flex-компонентов. На самом деле это презентация "Building a Flex Component" с Adobe Components Developers Summit — событии, о котором следует рассказать подробнее (я попытаюсь сделать это в следующих записях). За ссылку на этот ценный док спасибо Сергею Ковалеву, монстру Флекс-разработки :)

Update: по совету JabbyPanda выложил тот же док на Issuu:

А чтобы увидеть в действии PDFMeNot, кликайте по ссылке "Дальше". Там у вас спросят логин/пароль. Используйте пару stateless/system (до четверга).


16:29:08, 33 коровы
Свободные знания в массы

http://knowfree.net/ — ресурс где можно найти множество книг по программированию в том числе и на flash|flex.
В день добавляют по 3-7 новых книг, естественно все книги на языке оригинала )

одно из последних обновлений:

null

Интересно когда у нас будут печатать подобные книги?

На ссылку навел 7thsky.


2008-02-12

21:52:45, Flash-ripper.com
Декомпилятор и обфускатор Flex / AS3 кода

Кто-нибудь пробовал в действии Flex-декомпилятор? Пока я не нашел в нем кнопки типа "Export Source", но кое-какие куски кода он уже показывает.

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

Для удобства пользования и модификации (лиц. LGPL) проект выполнен в виде AIR-приложения: установить FlexDecompiler.air (3.4 М).


18:28:10, Flash-ripper.com
Идеальный доклад: список тем для следующей FPUG

Сайт UAFPUG быстро развивается. На нем появился сервис добавления докладов, голосования за них и рейтинги докладов:

Рейтинг типа "Хочу рассказать"

Как это работает:
1. Любой желающий прочесть доклад на встрече добавляет свою тему.
2. Доклад попадает в список докладов UAFPUG (ссылки на доклады).
3. Любой желающий голосует за доклад на странице доклада. Таким образом, если докладов получается больше, чем позволяет время следующей встречи, то можно выбрать лучшие и слушать их.

Рейтинг типа "Хочу узнать"

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

Идеальный доклад попадает в пересечение рейтинга "Хочу узнать" с рейтингом "Хочу рассказать". Однако, стремясь к идеалу, будем реалистами, выбирая темы для следующей встречи :)


18:05:00, Flash-разработка
Всплывающие окна внутри Flex-приложения. Flex
Для всплывающих окон Flex-приложения используется PopUpManager:

createPopUp(parent:DisplayObject, className:Class, modal:Boolean = false, childList:String = null):IFlexDisplayObject
Создает всплывающее окно поверх других.
parent:DisplayObject - определяет дисплей-объект, относительно которого SystemManager выравнивает всплывающее окно.
className:Class - класс объекта всплывающего окна.
modal:Boolean - если true, окно будет модальным (другие интерактивные элементы блокироются). По умолчанию false.
childList:String - список, в который добавляется окно.
Значения:
PopUpManagerChildList.APPLICATION
PopUpManagerChildList.POPUP
PopUpManagerChildList.PARENT (по умолчанию).

Пример использования:
var warning:WarningWindow = PopUpManager.createPopUp(this, WarningWindow, true) as WarningWindow

14:14:20, Constantiner's blog
Третья встреча русскоязычной группы пользователей Flash-платформы

Russian Adobe Flash Platform User Group LogoСпециально выждал некоторое время чтобы сообщить (или напомнить) опоздавшим, что 17 февраля в Москве будет проходить третья встреча Russian Adobe Flash Platform User Group (RAFPUG). На ней с докладами выступят представители Flash-сообщества Александр Козловский, Сергей Чеканов и Андрей Дражников. Это обещает быть интересным! Так что спешите регистрироваться. Заодно отвечу на вопросы многих: подтверждения при регистрации по e-mail не высылаются. Так что не надо беспокоиться :)

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


13:42:42, Flash-ripper.com
Первые отчеты, еще фото, видео и правила группы UAFPUG, и чат

Дима 'Reijii' Кочетов написал первую часть отчета об UAFPUG, а Роман 'nouba' Шупер в форме микро-отчета выложил фото и видео с жарким, хоть и несколько беспорядочным обсуждением возможных отношений группы с Adobe. Роман же написал первую версию правил группы UAFPUG.

Пару слов от себя:
1) Дима Кочетов оказался прекрасным краеведом :)
2) Я не предполагал, что разумность как просто дружбы, так и работы с Adobe нужно объяснять, я считал это само собой разумеющимся. Поэтому я был не готов последовательно обосновывать важность этой стороны жизни группы, и, когда все же пришлось это сделать, сделал это наверняка не лучшим образом, что должно быть заметно на видео от Романа (ну вот я и "отмазался" :)

Я напишу о том, что не сумел / не успел сказать на встрече: почему дружить и работать с Adobe — это естественно, нужно и полезно.

Update 1: Активно действует Скайп-чат UAFPUG — приглашаем всех желающих.
Update 2: Свой отчет с фотографиями Харькова выложил Игорь r00z' Рузанов.


2008-02-11

18:32:00, Flash-разработка
Работа с интервалами. SmartFoxServer
Работать с интервалами полезно. Иначе можно совсем заработаться и свихнуться.
И в SmartFoxServer есть методы работы с интервалами:

setInterval(functionName, interval, params) - устанавливает новый интервал.
functionName - функция, которая будет вызвана после заданного интервала
interval - количество времени (в млсек.) между вызовами функции
params - объект (или ассоциативный массив), содержащий набор свойств
Возвращает ссылку на объект интервала.

clearInterval(intervalObj) - останавливает интервал и удаляет его.
intervalObj - объект ранее созданного интервала.

ВАЖНО: После своего создания, объект интервала осуществляет постоянный вызов заданной функции через заданное время. Необходимо обязательно явно, через clearInterval удалять объекты интервалов, если необходимость в них отпала. Иначе рано или поздно сервер просто загнется.

18:06:41, Garbage Collector
Yahoo! Maps API на ActionScript 3.0

Yahoo! зарелизили сегодня бета-версию нового компонента Map API, написанного на ActionScript 3.0, который позволяет очень быстро и просто налаживать взаимодействовие с API картографического сервиса от Yahoo!.

(more…)


17:51:00, Flash-разработка
Обновление при отладке серверных скриптов комнат. SmartFoxServer
При отладке серверных скриптов уровня комнат, необходимо каждый раз обновлять серверный скрипт для каждой комнаты.
Например, мы имеем три комнаты, для каждой из которых определен один и тот же серверный скрипт. Если мы внесли измененения в скрипт, необходимо провести процедуру обновления его (кнопочка RELOAD EXT.) для каждой комнаты. (Имеется в виду, что скрипт задан в конфигурации а не аттачится динамически).

17:13:00, Flash-разработка
if vs. switch. SmartFoxServer
Странное поведение серверного интерпретатора в обработчике handleInternalEvent(evt) .
Прямая проверка срабатывает:
if (evt.name=="spectatorSwitched") {}
Однако вариантная проверка работать отказывается!
switch (evt.name) {
case "spectatorSwitched":
break;
}


Далее эксперементы показали, что необходимо приведение к строковому типу:
switch (String(evt.name)) { }

Делаем вывод - в неоднозначных и странных ситуациях первым делом приводим типы.

15:53:00, Flash-разработка
Внутренние события SmartFoxServer
При определенных обстоятельствах SmartFoxServer генерирует внутренние события, которые можно обработать методом handleInternalEvent(event), где event.name - имя события, event.* - параметры события.

События:

fileUpload - клиент загрузил на сервер файл используя клиентское SFS API.
files - массив объектов со свойствами fileName(имя, под которым файл сохранился на сервере) и originalName (оргигнальное имя файла на клиенте)
user - объект User пользователя, пославшего файл.

loginRequest - генерируется в момент авторизации пользователя в зоне сервера. Только для скриптов уровня зоны. Только при включенной опции зоны customLogin.
nick - имя пользователя (java.lang.String)
pass - пароль пользователя (java.lang.String)
chan - объект сокет-канала соединения

logOut - генерируется, когда пользователь выходит из зоны.
roomIds - список всех комнат, в которых был пользователь (только для уровня зоны) (Java array)
playerIndexes - список всех номеров слотов, которые были у игрока до выхода (только для уровня зоны) (Java array)
uid - идентификатор вышедшего пользователя (java.lang.String)
chan - объект сокет-канала соединения
oldPlayerIndex - номер слота игрока для текущей комнаты (только для уровня комнаты)

newRoom - создана новая комната в зоне (только для уровня зоны).
room - объект новой комнаты

pubMsg - послано публичное сообщение.
room - объект комнаты
user - объект пользователя пославшего сообщение
msg - сообщение (java.lang.String)

privMsg - послано публичное сообщение.
room - объект комнаты
sender - объект пользователя пославшего сообщение
recipient - объект пользователя принимающего сообщение
msg - сообщение (java.lang.String)

roomLost - уничтожена комната в зоне (только для уровня зоны) .
roomId - идентификатор уничтоженной комнаты

spectatorSwitched - наблюдатель переключился в пользователя.
user - объект User пользователя, ставшего игроком
playerIndex - номер слота

userExit - пользователь покинул комнату зоны.
uid - идентификатор пользователя (java.lang.String)
oldPlayerIndex - номер слота игрока (java.lang.String)
room - объект комнаты, которую покинул пользователь

userJoin - пользователь вошел в комнату зоны.
user - объект User пользователя
room - объект Room комнаты

userLost- генерируется, когда пользователь непредсказуемо отключается от сервера.
roomIds - список всех комнат, в которых был пользователь (только для уровня зоны) (Java array)
playerIndexes - список всех номеров слотов, которые были у игрока до выхода (только для уровня зоны) (Java array)
uid - идентификатор вышедшего пользователя (java.lang.String)
oldPlayerIndex - номер слота игрока для текущей комнаты (только для уровня комнаты)

13:46:00, Flash-разработка
Класс User. Server Side API. SmartFoxServer
Класс представляет клиента, подключенного сервера и авторизованного в его зоне.

getIpAddress()
Возвращает IP-адрес клиента

getLastMessageTime()
Возвращает время (в млсек.) последнего сообщения клиента

getLoginTime()
Возвращает время авторизации пользователя (в млсек.)

getName()
Возвращает имя пользователя

getPlayerIndex()
Возвращает номер игрока (слот) пользователя

getPlayerIndex(roomObj)
Возвращает номер игрока (слот) пользователя для комнаты roomObj

getRoomsConnected()
Возвращает массив идентификаторов комнат, в которые вошел пользователь

getUserId()
Возвращает уникальный идентификатор пользователя

getVariable(name)
Возвращает переменную пользователя с именем name

getVariables()
Возвращает список всех переменных пользователя в формате java.util.HashMap

isAdmin()
Возвращает true, если пользователь администратор

isModerator()
Возвращает true, если пользователь модератор

isSpectator()
Возвращает true, если пользователь наблюдатель

setAsModerator(flag)
Переключить статус модератора flag пользователю

updateMessageTime()
Обновляет счетчик последнего сообщения пользователя


Управление свойствами класса

Можно установить собственные свойства для объекта User, используя свойство properties - ассоциативный массив. Например:
user.properties.put("score", score)

Методы управления properties:

put(key, value)
Добавляет новое свойство/объект

get(key)
Возвращает свойство/объект, с именем key. Если объект отсутствует, возвращает null

remove(key)
Удаляет свойство с именем key

size()
Возвращает размер массива свойств

13:29:00, Flash-разработка
Класс Room. Server Side API. SmartFoxServer
Класс представляет комнату зоны.

Методы управления комнатой:

contains(userName)
Возвращает true, если пользователь userName вошел в комнату

getAllUsers()
Возращает массив объектов User всех пользователей

getId()
Возвращает идентификатор комнаты

getMaxSpectator()
Возвращает максимально допустимое количество наблюдателей в комнате

getMaxUsers()
Возвращает максимально допустимое количество пользователей в комнате

getName()
Возвращает имя комнаты

getPassword()
Возвращает пароль доступа к комнате

getSpectatorCount()
Возвращает текущее количество наблюдателей в комнате

getUserCount()
Возвращает текущее количество пользователей в комнате

getVariable(name)
Возвращает значение перемеменной с именем name

getVariables()
Возвращает список переменных в формате java.util.HashMap

isGame()
Возвращает true, если комната игровая

isPrivate()
Возвращает true, если комната приватная

isTemp()
Возвращает true, если комната временная (создана динамически)


Управление свойствами класса

Можно установить собственные свойства для объекта Room, используя свойство properties - ассоциативный массив. Например:
room.properties.put("score", score)

Методы управления properties:

put(key, value)
Добавляет новое свойство/объект

get(key)
Возвращает свойство/объект, с именем key. Если объект отсутствует, возвращает null

remove(key)
Удаляет свойство с именем key

size()
Возвращает размер массива свойств

13:18:09, 33 коровы
UAFPUG Skype chat

Украинские флешеры болтают в чате, ждем-с остальных.


12:37:45, Flash-ripper.com
Завтра и в течении недели покупайте акции Microsoft

Компания Yahoo оказалась для Microsoft весьма крепким орешком. С 31 января 2008 г. они думают: продаваться или нет. Время идет, акционеры бушуют, Яхе грозит суд, но Яха не сдается, Яха думает. Многие верят, что Yahoo так и не сдастся Microsoft.

Возможно, эта вера уронила акции MSFT на 13% за восемь дней? Не знаю. Уже сейчас Microsoft "из-за Yahoo" потеряла $40 000 000 $40 000 000 000 в акциях.

А что это значает для нас? Купив акции Microsoft сегодня по дешевке, мы можем задорого продать их завтра, верно? Ведь Microsoft в конце-концов победит. Если вы понимаете, что я имею в виду под Майкрософт, а я имею в виду культуру бизнеса. В двух словах не объяснить.


11:17:47, Flash-ripper.com
Фотографии с UAFPUG в Харькове от Aqua

В сети появился первый фотоотчет с харьковской встречи использователей флэш-платформы.

Фотоотчет выложила в сеть Aqua, за что ей большое спасибо! И еще большее спасибо ей — за оперативно организованное место встречи практически в центре города. Когда оказалось, что желающие встретиться уже не помещаются в аудитории ХАИ, она практически сразу предложила альтернативный вариант. Честно скажу: я опасался, что из-за переноса места встречи многие не попадут на нее (это произошло за день до встречи). Я был неправ.

На встречу пришли практически все зарегистрировавшиеся. Такая организованность просто радует. Первое фото: 23 участника встречи UAFPUG-0:

Встреча UAFPUG в Харькове — 23 участника.

Мой отчет о встрече — будет. Но сначала было бы интересно услышать мнение других участников. Ведь встреча получилась весьма жаркой (как верно заметили в комментариях к предыдущей записи). Так что я не буду публиковать свой отчет ни сегодня, ни завтра — пусть сначала скажут свое слово все желающие, на которых я с удовольствием сошлюсь :)


10:42:00, Flash-разработка
Старые грабли с зоной видимости переменных. AS2
В примере Добавляем ссылку в контекстное меню Flash. ContextMenu. AS2 есть один подводный камень. В методе onContextMenu, getURL вызывается от имени _root.
Если не указывать от чъего имени вызывать, либо вызывать от this, ничего не произойдет.
Метод onContextMenu работает, трейс из него проходит, но окно ссылки не открывается. Превое что приходит на ум - может быть покопаться в локальной политике безопасности? - Не поможет. Дело совсем в другом.

А дело в том, что метод onContextMenu присваивается объекту элемента контекстного меню ContextMenuItem, который не знает такого метода.

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

09:30:29, RIA crumbs
UA FPUG: Начало…

Писать нужно, но пока особо некогда, поэтому кратко изложу свои первые впечатления о первой сходке UA FPUG, которая для меня началась в 06:00 утра. Итак начнем :)

06:00 - 08:30: Приведение мозга в порядок, посещение парикмахерской (чтобы не распугать флешеров) и поездка на вокзал с целью встретить гостей из Киева - noubase (Роман Шупер) и r00z (Игорь Рузанов).

08:30 - 09:45: Тяжелые дозвоны к Росту, который благополучно проспал :) и проснулся в 9 утра :). Хотя довольно оперативно примчался на вокзал, где его уже ждал я и свежевстреченные киевляне :) Которые сетовали на харьковские морозы.

09:45 - 11:30: Грубо говоря UA FPUG-mini, встреча была начата в количестве четырех полусонных FPUG’овцев в “кормежном” заведении Potato House.

11:30 ~13:00: Пешая гулянка по Харькову маршрут вкратце (все сопровождалось шутками и щелканьем затворов камер): Площадь Конституции - танки - монастырь - органный зал - Благовещенский Собор - “Дубы Колдуны” - книжный рынок - мини обсерватория - оперный театр - памятники в парке им. Т. Г. Шевченко (Ангел, памятник Т. Г. Шевченко, футбольный мяч) - Площадь Свободы (она же самая большая площадь Европы) - Памятник козаку Харко - легкая прогулка до места проведения UA FPUG.

12:50 ~13:00: Дойдя до места встречи мы встретили Ольгу Ланских, Aqua и еще парня (сорри забыл имя, отпишите как звать я впишу :( ). (девушкам большое спасибо за то, что пробили чудесный зал и за то, что подготовили чай/кофе/капучино и печенье-вафельные фигулины). Временно попрощались с ребятами и двинули грется в ближайшую кофейню - KOFEIN…

13:00 - 14:00: KOFEIN или “ФИГАСЕ”. Немного под усевшись в кофейне, на нас напало “ФИГАСЕ”. Оно напало не одно, а за компанию с Таней “0xFFFFFF” Белой (суровый флешер пишущий код в бумажном блокноте). Которая тоже была под ударом “ФИГАСЕ”. Потому, что она хотела сделать сюрприз, но зашла в первую попавшуюся кофейню погреться, а мы совсем ее не ожидали, и не все сразу “расчехлились”, что это таки она :) После того как “фигасе” спало и закончилась процедура обнимашек, опять начались разговоры о насущном :) Плавно перешедшие в месте с телами в зал где уже все собрались.

Продолжение следует…

ps. + отдельное спасибо Илье “__i” Панину за подготовку бейджиков.


2008-02-10

23:38:00, Flash-разработка
TextField+TextFormat.url работает только при включенном TextField.html. AS2
Потребовалось сделать текстовое поле ссылкой. Делать его с использованием HTML-разметки смысла небыло, поэтому просто снял с него getTextFormat, установил ему url="http://.../" и установил обратно setTextFormat. Однако ссылка не установилась. Поле по прежнему было неактивным. Чисто интуитивно, установил text_field.html=true и ссылка активировалась.

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