33 коровы - RIA разработка, Flex, Action Script, AIR, Eclipse, Monkey script

AIR. Полезные советы. Часть 1.

October 3, 2011 – 8:07 pm

Всем привет.
В ходе последнего проекта накопилось некоторое количество интересностей, проблем и их решений. Я постараюсь рассказать о них в цикле статей.

Проблема 1: Генерим html строку, устанавливаем ее как HTML.htmlText, не отображаются картинки и swf-файлы.
Решение: Нужно разрешить добавлять контент из html строки в “песочницу” приложения

HTML.htmlLoader.placeLoadStringContentInApplicationSandbox = true;

Проблема 2: Есть HTML компонент. Нужно отделить контент, от скролла. Хочется чтобы скроллы были spark.
Решение:
HTML – это mx компонент. Гибкость работы со скроллами нам дают spark компоненты. Поэтому нужно преврать mx:HTML в компонент поддерживающий spark скроллы. Минимальным требованием является реализация spark.core.IViewport интерфейса. Приблизительный код компонента:

package com.the33cows.spark
{
	import flash.events.Event;
 
	import mx.controls.HTML;
 
	import spark.core.IViewport;
 
	public class SparkHTML extends HTML implements IViewport
	{
		public function SparkHTML()
		{
			super();
//прячем родные скроллы 
			verticalScrollPolicy = "off";
			horizontalScrollPolicy = "off";
			clipAndEnableScrolling = true;
		}
 
		private var _verticalScrollPosition:Number;
		private var _clipAndEnableScrolling:Boolean;
		private var _horizontalScrollPolicy:Number;
 
		[Bindable]
		public override function get contentHeight():Number
		{
			return super.contentHeight ;
		}
 
		[Bindable]
		public override function get contentWidth():Number
		{
			return super.contentWidth;
		}
 
		[Bindable]
		public override function get horizontalScrollPosition():Number
		{
			return super.horizontalScrollPosition;
		}
 
		public override function set horizontalScrollPosition(value:Number):void
		{
			_horizontalScrollPolicy = value;
 
			super.horizontalScrollPosition = value;
		}
 
		[Bindable]
		public override function get verticalScrollPosition():Number
		{
			return super.verticalScrollPosition;
		}
 
		public override function set verticalScrollPosition(value:Number):void
		{
			_verticalScrollPosition = value;
			super.verticalScrollPosition = value;
		}
 
 
		public function getHorizontalScrollPositionDelta(navigationUnit:uint):Number
		{
			return 0;
		}
 
		public function getVerticalScrollPositionDelta(navigationUnit:uint):Number
		{
			return 0;
		}
 
		[Bindable]
		public function get clipAndEnableScrolling():Boolean
		{
			return _clipAndEnableScrolling;
		}
 
		public function set clipAndEnableScrolling(value:Boolean):void
		{
			_clipAndEnableScrolling = value;
		}
 
		override protected function createChildren():void
		{
			super.createChildren();
			if (htmlLoader)
			{
//решаем проблему 1 на глобальном уровне. 
//Нужно быть внимательным если контент генерится "на стороне"
				htmlLoader.placeLoadStringContentInApplicationSandbox = true;
//слушаем изменение размеров внутренностей html
				htmlLoader.addEventListener(Event.HTML_BOUNDS_CHANGE, onHtmlBoundsChange, false, -100);
			}
		}
 
		private function onHtmlBoundsChange(event:Event):void
		{
			dispatchPropertyChangeEvent("contentHeight", contentHeight, contentHeight);
			dispatchPropertyChangeEvent("contentWidth", contentWidth, contentWidth);
		}
	}
}

использование

<s:HGroup>
<sprak:SparkHTML id="contentHtml" width="650" height="100%" />
<!-- отделили скролл -->
<s:HGroup  height="100%" width="100" gap="0" horizontalAlign="right" paddingRight="1" />
<!-- указали наш компонент как вью порт -->
<s:VScrollBar id="scrollPage" height="100%" viewport="{contentHtml}"/>
</s:HGroup>

Данный код на 100% решил мои задачи. Если нужно больше – дерзайте.

На сегодня пока все :). Ждите продолжения


Как восстановить workspace в эклипсе.

September 27, 2011 – 6:38 pm

Вылетел у меня эклипс и вместе с ним погиб воркспейс. После запуска эклипса, он грузился до определенного момента и вис намертво. Первый раз я просто пересоздал вокрспейс и импортнул проекты по-новой (сделать такое мне посоветовали несколько человек). Но вместе с воркспейсом погибли все мои настройки и это было грустно.
Через какое-то время эклипс повторил свой трюк. И я таки решил найти другое решение, сначала пытался использовать различные варианты запуска эклипса из командной строки, но ничего не вышло.
Поиск дал следующее решение.

Перескажу рецепт:
идем в папочку воркспейса и убиваем файл .metadata/.plugins/org.eclipse.core.resources/.snap
и все отлично запускается. Справедливо как для мак ос, так и для виндовс.


Разработка Android приложений на Flash без устройства.

February 13, 2011 – 11:28 am

Нижне я расскажу некоторые вещи которые неплохо знать, если вы решили попробовать разрабатывать Android приложения на flash. Я опишу с чем я столкнулся когда смотрел на возможности разработки.

Read the rest of this entry »


Integrate SourceMate into FlashBuilder

April 27, 2010 – 4:16 pm

Есть проект SourceMate который добавляет различные плюшки к функционалу Flash Builder.
После некоторого обсуждения в жуйке я поместил предложение об интеграции SourceMate и FlashBuilder, там всего пара вариантов интеграции. Или купить весь проеэкт или включать лицензию на SourceMate в премиум версию билдера. Если вам нравится — голосуйте за интеграцию SourceMate и FlashBuilder.
Я считаю, что это вполне хороший вариат в плане съэкономить нам нервы, адобу деньги и предоставить нам более адекватную и продуктивную среду разработки


Flash builder 4, мёд и дёготь 50/50

March 25, 2010 – 3:16 pm

Вышел релиз Flash builder 4 и новая версия sdk4 (типа). Вроде и приятно и пофиксили много бяк. Я даже порадовался первый день, пока не начал с ним работать вплотную.

Вот некоторый набор маразматических (с моей точки зрения) решений от адоба:

  1. Переименование неймспеса для mx компонентов. Обратной совместимости с беттой теперь отсутствует. Если в комманде 1 человек то нестрашно, если несколько и несколько связаных проектов то нужно резко всем сменить билдер, заапдейтить проекты и синхронизироватся.
  2. Сделать свой хелп на аире. С точки зрения адоба они круто сделал 1 раз и пихай во все продукты. С точки зрения флекс разработчика — полный маразм. Сказать свое фии можно на Flash Builder Ideas 
  3. Эпик феил с установщиком. По уполчанию он предлагает распаковатся на рабочий стол (зачем мне на рабочем столе мусор, папочку темп отменили?), но это не все, после распаковки он не ставится — у на русскоязычной винде у низ проблемы, русские символы в именх файлов не понимаются (и это те которые решили зачем-то все переводить на многие языки)
  4. Проблемы совместимости тестов, они не совместимы с тестами из бетты, стандартные плюшки не будут работать с вашим проектом. Замену библиотек на свои, билдер по хорошему не понимает (теоертически можно было бы просто заменить файл swc на свои из 4й бетты, но я не стал даже пытатся ибо изврат). Что бы все работало нужно переходить на новую сдк (см. пункт 1).
  5. Несовместимость DataVisualization 3.5 и более ранних версий, причем в бетте все работало. (лично у нас тут полное поражение, нормало перейти на новую сдк. мы просто так не можем, нужно переписывать код).
  6. Умудрились жестко забить в компилятор путь к spark skin. (особых подробностей я незнаю, но Женя долго вчера матерился пытаясь сделать сборку мавеном).

Этот список можно продолжать, долго и нудно. Это просто те проблемы с которыми мы столкнулись всего за 3 дня использования релиза Flash Builder 4.
Но есть и приятности: пофиксили баг с импортом (мелкий, но очень напрягает), вернули разноцветные иконки, сделали флексюнит4 таки более приоритетным



]]> rss о RIA от 33 Коровы
Забадать RSS!
]]>
~~~~~~