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] のいろいろな使われ方はこちらに載ってるみたいです
いろいろ特別ルールがあるんだなあ