package com.nitoyon.binding
{
import flash.events.Event;
import mx.binding.utils.ChangeWatcher;
/**
* TwoWayBinding クラスは、ActionScript から双方向データバインディングを作成
* するための静的なクラスです。
*
*
プログラムからデータバインディングを作成するには、通常、BindingUtils
* クラスの bindProperty メソッドを利用しますが、
* 双方向に作成するとスタックオーバーフローしてしまいます。
* このクラスは双方向のデータバインディングを簡単に作成するための
* TwoWayBinding.create メソッドを用意しています。
*/
public class TwoWayBinding
{
/**
* 双方向データバインディングを作成します。
* @param src1 1つ目のオブジェクトを指定します。
* @param prop1 1つ目のプロパティを指定します。
* @param src2 2つ目のオブジェクトを指定します。
* @param prop2 2つ目のプロパティを指定します。
*/
public static function create(src1:Object, prop1:String, src2:Object, prop2:String):void
{
var flag:Boolean = false;
ChangeWatcher.watch(src1, prop1, function(event:Event):void
{
if(!flag)
{
flag = true;
src2[prop2] = src1[prop1];
flag = false;
}
});
ChangeWatcher.watch(src2, prop2, function(event:Event):void
{
if(!flag)
{
flag = true;
src1[prop1] = src2[prop2];
flag = false;
}
});
}
}
}