FlashDevelopでFlashCS4のflライブラリUIコンポーネントを使用する方法
FlashDevelopでComboBoxを使用したかったのですが、mxmlのクラスしかありません。
画面もコードで定義したかったので代替手段はないか探してみると、flライブラリを使用したサンプルが何件かありました。
試してみるとFlashDevelopにはflライブラリが存在しないためimportエラーが発生します。
オーサリングツールにflライブラリのflaファイルがあるので、それをswcファイルに変換すればライブラリとして使用できそうです。
私が所有しているオーサリングツールはFlash CS4です。
CS4の場合、flライブラリのflaファイルは以下のパスにありました。
(インストールフォルダ)/Adobe/Adobe Flash CS4/Common/Configuration/Components/User Interface.fla
パブリッシュ設定でswc書き出しにチェックを入れるとswcファイルも一緒に作成されます。
作成したswcファイルをFlashDevelopのプロジェクトに加えて(srcフォルダとか)コンテキストメニューから「ライブラリに追加」を選択すれば有効となります。
プロジェクト->プロジェクト設定->コンパイラー設定->SWC librariesにswcファイルのパスを加えるやり方もあります。
サンプルソース
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import fl.controls.ComboBox;
public class UiSample extends Sprite
{
private var mTf:TextField;
public function UiSample()
{
var combo:ComboBox = new ComboBox();
combo.x = 10;
combo.y = 10;
combo.addItem({"label": "選択肢1", "data": 1});
combo.addItem({"label": "選択肢2", "data": 2});
combo.addItem({"label": "選択肢3", "data": 3});
combo.addItem({"label": "選択肢4", "data": 4});
combo.addItem({"label": "選択肢5", "data": 5});
combo.addEventListener(Event.CHANGE, ListenerComboSelect);
addChild(combo);
mTf = new TextField();
mTf.x = 10;
mTf.y = 50;
mTf.autoSize = TextFieldAutoSize.LEFT;
mTf.text = "選択結果が表示されます";
addChild(mTf);
}
private function ListenerComboSelect(evt:Event):void
{
var combo:ComboBox = evt.currentTarget as ComboBox;
var text:String = combo.selectedLabel as String;
mTf.text = text+"が選択されました";
}
}
}
サンプルです。(要FlashPlayer)