はじめてのコンポーネント

Flashコンポーネントを手動で配置して使うのは簡単だけど、スクリプトコンポーネントを生成して使うにはどうしたらいいのか調べてみました。(コンポーネントを使った開発には不慣れです)

コンポーネントを生成するにはattachMovie()じゃなくてcreateClassObject()を使うらしい。しかしcreateClassObject()はmx.core.UIObjectのインスタンスメソッドなのでこれを継承したクラスの中で呼ばないといけない。つまりコンポーネントを自作しないといけないみたいです。初めてのコンポーネント作りでドキドキ。

以下、間違いを恐れずメモ。

mx.core.UIObjectの親クラスはMovieClipなので、まずはMovieClipを継承していたところをUIObjectに変える。
このUIObjectは初期化に色々とお約束があって

コア関数について

import mx.core.UIObject;

class mypackage.MyComponent extends UIObject {
    // 空のコンストラクタを定義する。
    function MyComponent() {
    }

    function init():Void {
        super.init();
    }

    function createChildren():Void{
        // createClassObject を呼び出してサブオブジェクトを作成する。
        size();
        invalidate();
    }

    function size(){
        // サイズ変更を処理するコードを記述する。
        super.size();
        invalidate();
    }

    function draw(){
        // 視覚的表現を処理するコードを記述する。
        super.draw();
    }
}

init, createChildren, size, drawメソッドを用意してやる。

init()でコンストラクタの代わりに初期化して、createChildrenの中でattachMovieやcreateClassObjectするわけね。
そのあとdraw()が呼ばれるのか。ちなみにdrawは直接呼ばずにinvalidate()を使え、とのこと。

配布用のコンポーネントを作るためにはまだコンポーネントパラメータを書いたりその他ごにょごにょしないといけないのだけど、今回はそこまでするつもりはないのでやりません。

コンポーネントの作成