Bindable をつけてみる

SWFLoader の source の値に、
xml から動的に取得してきた値を代入しようとしたときに


データバインディングでは"swfUrl"への代入を検出できません。

と怒られてしまいました


ちなみにコードは以下のようなかんじ
(便宜上必要最小限にまとめ、xml ロード部分も省略してダミーの URL 直書きにしてあります。。)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script >
		<![CDATA[
			private var swfUrl:String = "http://testurl.jp/test.swf";
		]]>
	</mx:Script>
	<mx:SWFLoader id="Test" autoLoad="true" source="{swfUrl}"/>
</mx:Application>

どうやら、Flex 3 の世界では
データが変更されるとそれに応じてユーザインタフェースが変更されるようなデータバインディングが行われる際は、
それを実現する変数の宣言の前に [Bindable] をつけてあげなくてはいけないらしかったです


修正後が以下のコード

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script >
		<![CDATA[
			[Bindable]
			private var swfUrl:String = "http://testurl.jp/test.swf";
		]]>
	</mx:Script>
	<mx:SWFLoader id="Test" autoLoad="true" source="{swfUrl}"/>
</mx:Application>

これで警告は出なくなりました


ちなみに、[Bindable] のいろいろな使われ方はこちらに載ってるみたいです

Adobe のヘルプサイト


いろいろ特別ルールがあるんだなあ