Mach3.laBlog

備忘録: Flashライブラリ内のビットマップを表示しようとして困った (~CS4)

この記事は賞味期限切れです。(更新から1年が経過しています)

タイトルの通りですが、ちょっとつまづいたポイントがあったのでメモ。
Flashの「ライブラリ」に登録したビットマップデータの表示の仕方です。
そんなに頻繁にやる事ではなさそうですが…。

リンケージを設定

まずライブラリ内でリンケージを設定します。

リンケージの設定

お好きなクラス名を入力。
基本クラスは自動的にBitmapDataに設定されます。

クラス化→配置

var cls:Class = getDefinitionByName("MyImage") as Class;
addChild( new Bitmap( new cls() ) );

ライブラリにあるクラスを呼び出すにはgetDefinitionByNameを使います。
MyImageはBitmapDataを継承しているので、
Bitmapのコンストラクタにぶん投げてステージに配置します。

FlashCS4以下ではエラーになる

ここで困った事に、CS3でパブリッシュ中に下記のエラーが表示されました。
(後述のリンク先に記載されてますが、CS4迄は同じ症状のようです。)

myimage$iinit() の引数の数が一致していません。2 が必要ですが、0 が指定されました。

どうやらコンストラクタに引数を二つ渡さなければならない様子。
継承元のBitmapDataにあわせてwidth/heightを渡すのかな?と思いましたが
それだとスクリプト上で一々画像の縦横サイズを記述しておかなければならない。
これは、大変美しくない。

が、調べている内に余計な心配だったことが発覚しました。

N1005003 – [ライブラリ]のビットマップに自動設定したクラスに渡す引数 – Flash : テクニカルノート

ふたつの引数というのはインスタンスの幅と高さです。これは、「自動生成された」クラスの継承するBitmapDataクラスのコンストラクタメソッドが、同じふたつの引数を必須としていることに対応していると考えられます。もっとも、その数値は実際のビットマップの幅と高さでなくて構いません。引数にどんな数値を指定しようが、結果として値はビットマップの実際の幅と高さになます[*1]。また、後から変えられません(読取り専用)。したがって、引数には0をふたつ渡せば結構です。

つまり、引数に何を突っ込もうが
ちゃんと画像サイズはオリジナルの物が使用されるという事ですね。安心。
したがって引数には適当な物をつっこんでおきましょう。

var cls:Class = getDefinitionByName("MyImage") as Class;  
addChild( new Bitmap( new cls( 0, 0 ) ) );

尚、引数の型には縛りがないようで、
文字列や配列等いろいろ突っ込んでみましたが正常に動作します。

addChild( new Bitmap( new cls( "しごと", "めんどい" ) ) );

お好みで彩りを添えてあげてください。

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*