Flex のライブラリ swc を作って、それを参照するときのエイリアスを作るためのもののようだ。以下は Flex Builder でやる場合のメモ。
とりあえずテキトーなクラスを作る。折角なので TextArea を継承してみる。
package hogepackage { import mx.controls.TextArea; public class HogeClass extends TextArea {} }
クラスパスの通ってるディレクトリ(じゃなくてもいいんだけど)に Manifest.xml を作る。マニフェストのファイル名は何でもいいっぽい。中身はこんな感じ。
<?xml version="1.0"?> <componentPackage> <component id="kagamihogehoge" class="hogepackage.HogeClass"/> </componentPackage>
で、プロジェクトのプロパティ -> Flex ライブラリコンパイラの名前空間 URL にテキトーな URL を入れる。とりあえず今回はホントーにテキトーに http://d.hatena.ne.jp/kagamihoge/flextest でw マニフェストファイルには Manifest.xml を。ソースファイルの外つーか上に置く場合は、..\resources\Manifest.xml とかで。
コレで、このライブラリ使う場合は、kagamihogehoge という名前で hogepackage.HogeClass クラスが使えるようになる。
で、テストのため別途 Flex プロジェクトを作る。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:khoge="http://d.hatena.ne.jp/kagamihoge/flextest" layout="absolute"> <khoge:kagamihogehoge id="kid" x="0" y="0" width="200" height="200" /> </mx:Application>
xmlns 属性で先ほど入力した名前空間 URL(http://d.hatena.ne.jp/kagamihoge/flextest のこと)を入れる。後はみたまんま。コレを実行すると TextArea が表示される。なるほど。
コレだけだとナンなので。ライブラリ側のクラスに変数を追加した場合、どんな風にアクセスするのかをやってみる。
package hogepackage { import mx.controls.TextArea; public class HogeClass extends TextArea { public var a:int; public var s:String; public var array:Array; public var array2:Array; private var b:int; public function HogeClass() { } public function set valueB(b:int):void { this.b = b; } public function get valueB():int { return this.b; } } }
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:khoge="http://d.hatena.ne.jp/kagamihoge/flextest" layout="absolute" applicationComplete="init()"> <khoge:kagamihogehoge id="kid" x="0" y="0" width="200" height="200" visible="true" s="foovar" valueB="20"> <khoge:a>20</khoge:a> <khoge:array> nanntoka </khoge:array> <khoge:array2> [nanntoka, kantoka, nonntoka] </khoge:array2> </khoge:kagamihogehoge> </mx:Application>
ほほー。タグの属性でも要素でもどっちの書き方でもアクセスできるのね。public プロパティでも get/set でもよしと。
確か mxml で書かれているものも実体は ActionScript なんだよね? つーことは、いつも mx:* なんちゃらで使ってるコンポーネントもこうやって作られてる、ってことか。
> たぶん、UIが必要なのはmxmlで作り
前述のようにMXMLで生成されるUI も元はASで作られていますから、MXMLを使わずともUIは作れます。ただゼロから作るのは大変ですので、簡単に(RIA向けの)UIが作れるよう提供されているのがFlexフレームワークです。MXMLはFlexフレームワークの主にUIを記述するためのXMLの一種、という関係になります。mxmlとActionScriptの関係 - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 - actionscriptグループ のコメント欄より
なるほどー。