33 коровы – Flex Data Binding в чистом AS3 проекте - RIA разработка, Flex, Action Script, AIR, Eclipse, Monkey script

Flex Data Binding в чистом AS3 проекте

September 6, 2009 – 6:23 pm

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

Но стороние решения — это плохо, у нас теряется связь с flex проектами.

Года полтора назад передомной встала задача, использовать одни и теже классы в AS3 проекте и во flex проекте, а т.к. большая часть этих классов была обычными байндабл VO, то приходилось в AS3 проекте просто вырезать метатег [Bindable] или попросту делать клонов нужных VO. Благо проект был совсем небольшим и на эти неудобства можно было закрыть глаза.

На днях я таки решил снова попробовать подключить байндинг в AS3 проект, все получилось и на радость мне все оказалось очень хорошо — flexframework доработали и убрали лишние зависимости, теперь флешка с включенным байндингом занимает около 5 кб (релиз версия)!

вот простой пример кода:

package {
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
 
	import mx.binding.utils.BindingUtils;
 
	[SWF(backgroundColor="#ffffff")]
	public class DataBindingSample extends Sprite
	{
		[Bindable]
		public var stageY:Number = 0;
		[Bindable]
		public var stageX:Number = 0;
 
		private var circle:Sprite;
 
		public function DataBindingSample()
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
 
			circle = new Sprite();
			circle.graphics.beginFill(0x55aaFF,1);
			circle.graphics.drawCircle(0,0,10);
			circle.graphics.endFill();
			addChild(circle);							
 
			BindingUtils.bindProperty(circle,"x", this, "stageX");
			BindingUtils.bindProperty(circle,"y", this, "stageY");
 
			stage.addEventListener(MouseEvent.MOUSE_MOVE, changePosition);
 
		}
 
		protected function changePosition(event: MouseEvent): void
		{
			stageX = event.stageX;
			stageY = event.stageY;
		}
 
	}
}

Скомпилированый пример:

Flex Data Binding in AS3 project sample. You need to install adobe flash player 10 to view this content

Всем удачного кодирования!

  1. 5 Responses to “Flex Data Binding в чистом AS3 проекте”

  2. Не совсем понял, а как вы заставили работать тег биндинга в чистом as3-проекте?

    By DataGreed on Sep 13, 2009

  3. Возможно, проект компилится все же с помощью Flex SDK, который понимает этот тэг?

    By Рост on Sep 24, 2009

  4. Здравствуйте!

    Спасибо за рецепт.
    Мне его подсказали на весеннем flash gamme.

    Хотел бы уточнить.

    Вы пользуетесь для компиляции flex_sdk_3 или flex_sdk_4?

    В июле пробовал сделать то же самое в четвертом. Не получалось.

    By razukrashka on Sep 29, 2009

  5. 3й, 4й пока не трогал

    By Ilja on Sep 29, 2009

  6. Спасибо.

    Скачал последнюю 4-ку. Забиндить не удалось. Не стал вдаваться в подробности.

    By razukrashka on Sep 29, 2009

Sorry, comments for this entry are closed at this time.



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