Как стать автором
Обновить
0

Action Script *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Приручаем JavaScript или очередной велосипед для frontend-приложений

Время на прочтение3 мин
Количество просмотров9.3K
На «Хабре» всё чаще и чаще появляются статьи про разработку фронтенда на JavaScript. Рассматриваются тяжёлые библиотеки от Google и Facebook, не прекращаются холивары на тему какой фреймворк лучше использовать. Но не задумывались ли вы, что все эти фреймворки невозможны или абсолютно нелепы на других языках программирования? По моему субъективному мнению, это всё от того, что во главе угла DOM модель — HTML-тег, а не компонент. Но вернёмся к JavaScript.
Читать дальше →
Всего голосов 17: ↑7 и ↓10-3
Комментарии35

Разработка Air Native Extensions (ANE) для OS X

Время на прочтение13 мин
Количество просмотров6.6K
Привет всем хаброюзерам. Хотел бы поделиться опытом создания нативных расширений для OS X.

AIR — просто потрясающая в своей кроссплатформенности среда. Пока дело не доходит до использования каких-то уникальных для платформы фишек. Именно с этой проблемой я столкнулся, когда передо мной была поставлена задача превратить браузерную flash-игру в десктопную для OS X. Всё это с использованием среды AIR мной было сделано за несколько часов и я не буду описывать этот процесс, так как в гугле на эту тему полно информации. Самое интересное началось тогда, когда появилась необходимость подключить к игре различные сервисы Apple, такие как GameCenter, In-App-Purchase и т.д. И здесь я столкнулся с трудностями. Дело в том, что есть куча готовых ANE, в том числе и бесплатных. Но вся беда в том, что все эти решения работают только для iOS. Для OS X же нет ни то, что готовых библиотек, но даже информацию по созданию этих библиотек приходилось собирать по крупицам с пары-тройки интернет ресурсов многолетней давности, постоянно натыкаясь на какие-то подводные камни или даже айсберги.

Сейчас же я хочу собрать все накопленные знания и опыт в одном месте и поделиться с вами, чтобы хоть немного уменьшить ту боль, через которую вам придётся пройти, если всё таки вы тоже решитесь на создание нативных библиотек для мака. Хотя после четырёх разработанных расширений для OS X они не кажутся такими уж сложными и мудрёными.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии2

Чтение GATT-характеристик Bluetooth устройства

Время на прочтение6 мин
Количество просмотров20K
Привет, хабраюзеры!

Работая над своей ANE библиотекой для работы с Bluetooth LE в AIR приложении для iOS+OSX, обнаружил что помимо ваших собственных сервисов и характеристик для обмена информацией, у bluetooth-устройств есть стандартные. Статья о том, как считывать информацию с этих характеристик. Скажу сразу я не большой знаток bluetooth и всего что с ним связано, и для меня все это в новинку :) Поехали…
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии4

Стриминг интерактивного контента. Без Плагинов

Время на прочтение3 мин
Количество просмотров5.3K
Позвольте представиться — меня зовут Валерий, я начинал работать как 3D-artist, а затем — немножко руководитель проектов в одной известной отечественной компании по разработке образовательного ПО для школ.

В качестве основной платформы разработки очень давно был выбран Adobe (тогда еще Macromedia) Flash за то, что был достаточно простым и позволявшим с помощью ActionScript решать все наши задачи. И хорошо работал на почти всех существовавших тогда платформах (ведь их было не так много — целились только на десктопы, а там всегда были отличные браузеры с возможностью поставить плагин).
Читать дальше →
Всего голосов 8: ↑5 и ↓3+2
Комментарии3

Истории

Передаем больше 40 килобайт по LocalConnection

Время на прочтение4 мин
Количество просмотров3.5K
С ростом Flash проекта состоящего из раздельных .swf, соединенных между собой через LocalConnection, может возрасти потребность в размерах передаваемых данных. К примеру, это может быть обмен данными присланных сообщений между игрой и отдельным приложением сообщений.

Проблемы начинаются когда передаваемых данных становится больше 40 Кб, появляется ошибка и приложение перестает нормально работать.

Напомню, что объем данных, которые можно передать как параметры методом send, ограничен 40 килобайтами.

Есть несколько выходов из такой ситуации:
  1. Использовать Local Shared Objects;
  2. Передавать данные с помощью JavaScript;
  3. Передавать данные по LocalConnection разбив на части.


Первые два пункта требуют больших изменений чем последний. Поэтому с минимальными затратами реализуем передачу данных по частям которые будут меньше 40 Кб.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии6

Календарь дней рождений и юбилеев контактов Outlook

Время на прочтение6 мин
Количество просмотров21K
После перехода с Google (Gmail, Контакты, Календарь) на MS Exchange и Outlook мне больше всего не хватало календаря «Дни рождения и мероприятия контактов», в котором автоматически создавались одноименные события из адресной книги. Стандартная функция Outlook создания записи о дне рождения при редактировании контакта меня не устроила, т.к. все новые контакты с датами рождений и юбилеями, как правило, создаются в мобильном телефоне аккаунта, подключенного к Exchange по протоколу ActiveSync. А при таком способе ввода данных никакие записи в календаре не создаются.

Поэтому был написан VBA скрипт (т.к. ни одно бесплатное решение, найденное в интернете, мне не подошло по функционалу), который делает следующее:
— пересохраняет даты рождений и юбилеи всех контактов адресной книги (таким образом, нативной функцией Outlook в основом календаре создаются записи о днях рождениях и юбилеях контактов);
— перемещает все записи о таких событиях из стандартного календаря в указанный пользователем (чтобы не засорять и без того перегруженный записями основной календарь);
— исправляет записи контактов «Хранить как» (как известно, iOS и Android некорректно работают с этим полем в аккаунтах Microsoft Exchange) следующим образом: если поле «Имя» или «Фамилия» содержат какие-то значения, то «Хранить как» примет значение «Имя Фамилия», в противном случае — «Организация» (это особенно полезно, если сохраняешь названия служб и всякого рода контор в поле «Организация», а не «Имя», как, например, «Доставка Пиццы»).

Для того, чтобы заработал такой алгоритм, никакой дополнительный софт не нужно устанавливать.
Нужно выполнить всего-лишь 2 действия: разрешить выполнение неподписанных макросов и скопировать сам скрипт через буфер обмена (CTRL-C, CTRL-V) в Outlook.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии0

Разрабатываем игру на AS3 (Часть 2: мини-игра «Duck Hunt»)

Время на прочтение5 мин
Количество просмотров7.7K

рисунок 4
Duck Hunt

Цель: разработка компьютерной игры
Целевая аудитория: начинающие, интересующиеся, зеваки
Инструменты: ActionScript 3.0


Содержание цикла





Введение


В предыдущих выпусках...
  • Возможно, слегка размытое введение;
  • Определён некоторый набор замечаний;
  • Созданы и описаны требуемые инструменты;
  • Поставлена задача для настоящей части.


Вдохновением для мини-игры стала старая тёплая "Duck Hunt". Однако повторение чего бы то ни было практически лишает этот процесс творчества, превращая его в скучную рутину. Да и копии такой игры, скорее всего, уже есть (осторожно, можно получить эстетический шок от полёта уток). Необходимо помнить, что создаётся небольшая игра, поэтому не стоит перегружать её лишними особенностями (и так есть довольно забавные вариации).
Будем делать некоторую сборную пародию на старенькие компьютерные игры, тем самым обосновав любое замеченное использование предметов чужого авторского права, на которые делается пародия.
Хотите знать больше?
Всего голосов 24: ↑14 и ↓10+4
Комментарии9

Вмятина в пространстве при помощи DisplacementMapFilter

Время на прочтение5 мин
Количество просмотров4.2K
В свободное от основной работы время ваяю в области игроделания.
Последняя поделка посвящена классическому tower defence на космическую тематику:
  • дано межпланетное пространство
  • траектории астероидов определяются гравитационными полями планет
  • «пушечки» ракетами уничтожают астероиды

Поскольку игра делается в изометрии, захотелось изобразить сцену примерно так


взято отсюда

Встал вопрос — как?

  • использование всяких фотошопов — абсолютно неприемлемо, по-понятным причинам
  • прикручивать 3d движок ради рисования сетки — не очень-то и хотелось

Спасибо, добрый человек в профильной конференции подсказал путь поисков — DisplacementMapFilter.
Открыл документацию, скопировал пару примеров, попробовал написать свой фильтр — с ходу не получилось.
Не буду описывать свои поиски решения — сразу представлю результат (на google code) и сделаю несколько важных, на мой взгляд, пояснений.

Код рабочих классов DisplacementMapFilterGravity и DisplacementMapFilterGravityParams выкладываю как есть — т.е. на момент написания статьи, они такие-же, как и в проекте. Класс Main — для демонстрации.
Подробности
Всего голосов 5: ↑4 и ↓1+3
Комментарии6

Разрабатываем игру на AS3 (Часть 1: введение, утилиты)

Время на прочтение12 мин
Количество просмотров7.6K
Цель: разработка компьютерной игры
Целевая аудитория: начинающие, интересующиеся, зеваки
Инструменты: ActionScript 3.0**


Замечание 0:
Постараюсь достичь относительной автономности для каждой части, что позволит читать их факультативно и не по порядку.


Замечание 1:
Текст статьи может содержать личное мнение автора по определённым вопросам. Вся ответственность за разжигание жарких бессмысленных споров возлагается на читателя (18+).
Содержание цикла





Введение



Замечание 2:
В процессе чтения вы не раз встретите слово «инструмент» по отношению к некоторым вещам. Это сделано специально. Считаю, что разработчик для решения определённых задач способен выбирать наиболее подходящий для этого инструмент и использовать его с умом.


Замечание 3:
В процессе чтения вы также не раз встретите слово «процесс». Оно будет употребляться как в широком смысле этого слова, так и в суженном техническом понимании. Без процесса нет творчества. Без процесса нет разработки.

Возможно, вы обратили внимание, что я пишу «разработка компьютерной игры», явно не указывая, какой именно. Это не просто так. С одной стороны, можно сказать: «не важно, что ты пишешь, главное как»*. С другой стороны, как вы, наверное, опять же, заметили, статья подразумевает несколько частей, потому что это, кроме всего прочего, целая история. Так что пускай конечный продукт будет некоторой интригой всего цикла статей. На самом деле, то, что я излагаю материал через историю, подчёркивает, что без процесса нет разработки.
Для разработчика компьютерная игра** — это не просто некоторая программа, но и некоторый процесс. Во время этого процесса (творческого, или творческого местами, или не творческого местами) происходит масса событий, влияющих на конечный продукт, иные продукты и непосредственно сам процесс, на разработчика и окружающих людей.

Если не брать в расчёт модель «выжать максимум прибыли», то для начала важен некоторый начальный импульс — идея, которая увлечёт вас в той или иной степени. Вы рисуете, оживляете процесс (в воображении, на бумаге, в графическом редакторе)… и т.д.
Вся история началась, когда я в очередной раз, между делом, посмотрел на логотип одной известной iкомпании…
Хотите знать больше?
Всего голосов 9: ↑2 и ↓7-5
Комментарии4

Тестирование Adobe AIR приложений в системе HockeyApp

Время на прочтение5 мин
Количество просмотров5.5K
Приветствую, друзья!

О чем статья


В этой статье будет дано поверхностное описание системы тестирования мобильных приложений HockeyApp. Я расскажу как пройти путь от написания кода в ActionScript, до получения логов в системе HockeyApp. И познакомлю с ANE библиотекой FPHockeyApp. Если вы знакомы с системами тестирования приложений, можете сразу перейти к примерам использования библиотеки FPHockeyApp.

Суть проблемы


Если вы разрабатываете мобильное приложение в одиночку, то вы наверняка ощущали дискомфорт от необходимости постоянно подключать разные устройства к компьютеру, чтобы закачать новую версию разрабатываемого приложения, для дальнейшего тестирования. Если же вы работаете в большой команде, то процесс раздачи тестовых сборок тестеровщикам, при ручном подходе превращается в ад… Системы автоматизированного тестирования приложений, вроде HockeyApp, предназначены для решения этой проблемы. Как оно работает, читайте дальше.

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии14

Поиск пути через NavMesh на ActionScript – CrossBridge-порт Recast Navigation

Время на прочтение6 мин
Количество просмотров9K


В этой статье я расскажу об опыте переноса C++ кода на ActionScript с помощью FlasCC компилятора и покажу, как с его помощью мне удалось портировать довольно большой объем полезного кода, решающего задачу поиска пути. В конце будет демо и ссылка на репозиторий с кодом. А пока пара слов о том, с чего вообще все началось.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии2

Автоматизация создания GUI (Photoshop + Starling)

Время на прочтение6 мин
Количество просмотров11K
Стала задача автоматизировать сборку GUI для одного проекта X.

1 Текущая реализация


Художник делает все свои дела в photoshop и отдает их программистам. Программисты, в свою очередь, сами как-то вытягивают текстуры или атласы и с помощью утилы позиционируют каждый отдельный элемент на stage флешки, далее ручкам добавляют все текстовые поля, эффекты, прописывают всем этим элементам координаты, которые получили благодаря утилите. В итоге получается очень долгая и мучительная работа, а если учесть, что это делает еще и программист — это АД.
Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии22

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Библиотеки, которые еще могут пригодиться

Время на прочтение4 мин
Количество просмотров8.1K
Некоторе время назад я задумался о том, чтобы выложить часть своих библиотек в общий доступ. И вот наконец дошли руки все подравнять и выложить на GitHub:

  • RObject — интроспеция с помощью describeTypeJSON
  • JsonMapper — типизированный JSON парсер
  • As3Query — DSL и ORM для Sqlite
  • FlexXB Mobile — оптимизированный xml-парсер FlexXB
  • air-hid-usb — расширение для работы с HID устройствами

Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии4

Particles System в моделировании толпы (3)

Время на прочтение4 мин
Количество просмотров9.1K
Продолжаем разговор от 10.04.2014 (Particles System в моделировании толпы(2)).

В этой части:
  1. добавлю гибель стрелок (ведь взрывы убивают)
  2. поиграюсь с настройками эмиттеров — хочется эпичности


добавлю гибель стрелок (ведь взрывы убивают)

Для того, чтоб «убить стрелку», есть много разных способов. Я же выберу самый распространенный — уменьшить некое «количество здоровья» до нуля или меньше. Но для того, чтобы что-нибудь уменьшить, надо этим самым сначала снабдить — здоровьем (HealthInitializer).
Подробности
Всего голосов 29: ↑24 и ↓5+19
Комментарии0

Паттерн конечные автоматы для Ash Entity System фреймворк

Время на прочтение10 мин
Количество просмотров8.1K
Два года назад познакомился с замечательнейшим фреймворком для разработки игр на Actionscript Ash (почти сразу после знакомства с ним, пришло понимание, что фреймворк подойдет под любой язык. А еще чуть-чуть позже появились порты фреймворка под другие языки — на момент написания перевода имеется 7 штук). Некоторое время распирало желание поделиться находкой с русскоязычным сообществом, пока меня не опередили переводом на Хабре. Теперь вдогонку хочу выложить перевод касательно реализации почти незаменимого паттерна Finite-State Machine для Ash Entity System фреймворка.
Подробности
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

Particles System в моделировании толпы (2)

Время на прочтение9 мин
Количество просмотров7.2K
Продолжаем разговор от 07.04.2014 (Particles System в моделировании толпы).

В этой части добавляю:
  1. медленные персонажи (это будут крупные стрЕлки)
  2. огибание в пути медленных стрелок быстрыми
  3. взрывы (с разбрасыванием тел)

Подробности
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Particles System в моделировании толпы

Время на прочтение8 мин
Количество просмотров11K
многие идеи, которые приходят ко мне, уже кто-то реализовал или скоро реализует (цитата с просторов интернета)


В далеком 2001 году меня, любителя стратегий реального времени, поразила игра “Казаки”. Поразила ГИГАНТСКИМИ толпами, бродящими по карте. Поразило то, что эти толпы довольно резво бегали на тогдашних маломощных компьютерах. Но в то время я работал на скорой помощи, был далек от программирования, потому восхищением дело это тогда и ограничилось.

Уже в наше время захотелось сделать игрушку с примерно подобным количеством подвижных юнитов — чтоб “эпик” просто зашкаливал(!). И чтоб эти юниты не просто двигались, а двигались внешне(!) осмысленно. И чтоб (главное), все это великолепие работало на слабеньких мобильных платформах.

Встал вопрос — как? С графикой вопросов нет — на любой современной платформе есть разные по-произодительности графические библиотеки, которые займутся выводом толпы на экраны. Главный вопрос — как программно реализовать осмысленное (ну или бессмысленное) нечто, что игроком воспринималось бы однозначно — это подчиняющаяся каким-то стимулам толпа, а не просто набор мельтешащих фигурок.

Уверен, существует куча рекомендаций, литературы, и даже реализаций. Но меня интересовало что-то “простенькое”, что можно применить в незатейливой игрушке для “мобилы” и собрать “на коленке”. Т.е. дешево и сердито, а главное — понятно для меня(!).

Кратко опишу рождение своего варианта идеи.
Всего голосов 21: ↑21 и ↓0+21
Комментарии4

Как «не программист» игру писал

Время на прочтение7 мин
Количество просмотров90K
Всем привет. Я хочу, чтобы этот пост послужил мотивацией для всех начинающих игроделов, да и не только для них. Статья не содержит сухой научной информации, которая так свойственна настоящим программистам. Хочу поделиться с вами своей историей, на мой взгляд, довольно увлекательной.

Началось всё с того, что ровно год назад меня посетила идея: сделать игру своими руками. Назовите это модным, популярным или трендовым, мол, сейчас многие хотят и делают, но для меня это было, как если б я китайский язык учить решил, да не просто, а так, чтобы с дипломатами китайскими на одном уровне разговаривать.
Читать дальше →
Всего голосов 183: ↑171 и ↓12+159
Комментарии62

Merge sort и AS3. Обгоняем родной Vector.sort(Array.NUMERIC)

Время на прочтение4 мин
Количество просмотров10K

Слева — mergeSort, справа — родная сортировка. PepperFlash и 75 миллионов элементов.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии12