26.8.12

Flex Charts - негламурные графики

Этот пост адресован всем, кто использует Flex для визуализации данных. Надеюсь, вы любите графики так же, как и я? :)
График - самый быстрый способ достучаться до сердца и мозга слушателя или читателя.

В Flex есть замечательная библиотека charts, содержащая графики на все случаи жизни - от линейных графиков до диаграмм со столбиками и кружками.
Одна проблема - эти графики слишком гламурно выглядят для современных ученых. Например, так:
Для тех кому интересно: это лестница Ламерея на кубическом одномерном отображении.
А хочется попроще, как в учебнике. Вот как-то так: 

В чем разница?


  1. Тени! Ужасные тени под графиками
  2. На фоне линии уровня, параллельные Ox
  3. Ось Ox на первом графике неизвестно где, положение рассчитано автоматически
  4. Цвета. На мой взгляд, они должны быть разными, но в отечественной литературе любят простые одноцветные графики
1. Итак, начнем с теней.
У ChartBase - предка всех графиков - есть свойство seriesFilters. Чтобы убрать тени, просто напишите:

<mx:LineChart id="priceChart" width="100%" height="100%" seriesFilters="[]" >

2. Убираем линии. Они лежат в backgroundElements, их, как и тени, до нас туда кто-то заботливо положил. Убираем так же:

<mx:LineChart id="priceChart" width="100%" height="100%" seriesFilters="[]"  backgroundElements="[]" >

3. У графика есть оси. И ими можно тоже уравлять. Чтобы вернуть ось Ox на место, скажем вертикально оси что она должна расти из нуля, тогда там появится и горизонтальная ось:

<mx:LineChart id="priceChart" width="100%" height="100%" seriesFilters="[]"  backgroundElements="[]" >
  <mx:verticalAxis>
    <mx:LinearAxis baseAtZero="true" />
  </mx:verticalAxis>
  ....
</mx:LineChart>

4. Каждая серия данных на графике обладает кучей свойств, управляющих визуализацей в разных типах графиков. В случае линейного графика цвет и ширина линиий определяются так:

<mx:LineChart id="priceChart" width="100%" height="100%" seriesFilters="[]"  backgroundElements="[]" >
  <mx:verticalAxis>
    <mx:LinearAxis baseAtZero="true" />
  </mx:verticalAxis>
  <mx:series>
    <mx:LineSeries displayName="My Price" yField="price" dataProvider="{data}" >
      <mx:lineStroke>
        <s:Stroke color="0x000000" weight="2" />
      </mx:lineStroke>
    </mx:LineSeries>
  </mx:series>
  ....
</mx:LineChart>

Вот и всё, такие графики можно всавлять в серьёзные статьи и отпраялять в печать :)

26.4.12

Об иконках и splash-картинках в AIR iOS приложениях

Только что искал как сделать в pure-AS приложении splah-screen. Наткнулся на вот такую статью в  документации: http://help.adobe.com/en_US/air/build/WS901d38e593cd1bac1e63e3d129907d2886-8000.html#WS901d38e593cd1bac58d08f9112e26606ea8-8000

В Flex у Application есть свойство splashScreenImage. Хочется чтобы в моем flash-приложении при запуске на i-девайсе во время запуска был не серый экран а что-то красивое.

Задача решается добавлением файла в корневую директорию приложения. Для iPhone это Default.png, для iPad - Default-Portrait.png и Default-Landscape.png
Частая ошибка здесь - забыть добавить файл в проект (надо поставить галочку в IDE или указать в параметрах в консоли).

Заодно нашел интересную информацию о том как убрать стандартный блик на иконке.
В дескрипторе в раздел iPhone->InfoAdditions нужно добавить такой текст:

<![CDATA[ 
        <key>UIPrerenderedIcon</key> 
        <true/> 
]]>

Сравните результат (слева с бликом, справа - без :) ):


8.4.12

Запускаем любое приложение на iOS из AIR приложения

Как некоторым известно, на iOS для запуска приложений из других приложений используются url-схемы.
Например, приложение набора номера можно вызвать перейдя по url вида tel:8-800-555-11-22
О том как сделать для своего приложения такую схему я уже писал ранее.
Проблема в том что в AIR приложениях есть ограничения на запуск URL. Можно переходить только по общеизвестным url-схемам типа tel:, mailto:, sms:, http: и т.п.
Чтобы запускать другие приложения (в том числе и свои) я написал расширение (ANE).

Расширение (ane) и библиотеку (swc) можно скачать здесь либо на github вместе с исходниками.

Использовать очень просто: 
подключаем к проекту библиотеку и расширение и пишем в коде когда нужно:


var ulauncher:URLLauncher = new URLLauncher;
ulauncher.launchUrl("myapp:smth");



Если на вашем i-устройстве установлено приложение, обрабатывающее url типа "myapp:...", то оно запустится.
На других платформах исполнение этого кода вызовет ошибку, к сожалению.

14.12.11

Наше участие в Flash GAMM! Kyiv 2011

В эти выходные прошла конференция разработчиков и издателей flash игр Flash GAMM. Команда нашей игровой лаборатории приняла участие в конференции и мы с Дмитрием Малковым прочитали совместный доклад о деятельности лаборатории.
Для заинтересовавшихся опубликую здесь презентацию, а чуть позже напишу на основе нее развернутый пост про лабораторию.

Either scripts and active content are not permitted to run or Adobe Flash Player version 10.2.0 or greater is not installed.

Get Adobe Flash Player

кликните и нажмите пробел
А теперь немного о конференции и впечатления:

Что запомнилось больше всего:

  • Speed Game Dating
  • Наш доклад :)
  • Доклады Ли Бримелоу и Тома Крха 


6.12.11

UI компоненты Mobile Flex 4.6

Недавно я участвовал в сравнении кросплатформенных мобильных SDK.
Исследование сузилось до сравнения PhioneGap и AIR. Одним из главных пунктов сравнения было наличие большого количества "нативных" UI компонентов. Хотелось бы рассказать о том что AIR, а именно Flex предлагает на эту тему.

2.7.11

Запускаем flash приложение на iOS извне

Как известно, для запуска прилжения на iOS извне используются URL-схемы.
Самый известный пример - url типа tel://xxx, mailto://xxx, http://xxx
Достаточно выполнить переход по url такого вида и iOS переключится на приложение, где определена эта схема, а оно само обработает строку xxx.

Пользователям XCode хорошо известно как определить схему для своего приложения. Надо  всего лишь добавить пару ключей в Info.plist. Как же быть тем, кто разрабатывает мобильные приложения на Flash/Flex?