サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

[ライブラリ]のビットマップに自動設定したクラスに渡す引数

ID: FN1005003 Product: Flash CS3 and above Platform: All Version: 9 and above/ActionScript 3.0

[ライブラリ]のビットマップに[クラス]を設定すると、そのコンストラクタメソッドを呼出すことによってインスタンスが生成できます(図001)。そのとき、コンストラクタに引数を渡すよう求められることがあります。本稿は、引数の要否とその理由について考察します。

図001■[ビットマッププロパティ]ダイアログボックスで[リンケージ]セクションに[クラス]を設定する


01 クラスの自動生成
[ビットマッププロパティ]ダイアログボックスで[クラス]を入力したとき、そのクラスが予め定義されていない場合には、定義を「自動生成」する旨の警告が表示されます(図002)。[OK]ボタンを押せば、空のクラスが自動的に作成されます。カスタムクラスを定義するなら、コンストラクタに渡す引数は、その定義にしたがいます。したがって、本稿はカスタムクラスをとくに定義しない場合について述べます。

図002■定義されていないクラスを自動生成する警告


02 Flash CS4 Professionalまでのコンストラクタの呼出し
[ライブラリ]のビットマップに「自動生成された」クラスのコンストラクタを呼出すとき引数を渡さないと、ふたつの引数を求めるつぎのようなコンパイルエラー#1136が起こります。

1136: 引数の数が正しくありません。正しくは2です。

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

[*1] Adobeの記事「Loading images and Library assets in Flash with ActionScript 3」は、つぎのように説明します。

Note: You need to provide the width and height of the bitmap image in ActionScript, even though it is already set in the Library asset. Oddly enough, while these values are required, Flash CS4 also ignores them. If you try to change the width and height values in the new BitmapData(width, height) statement, Flash CS4 ignores them and the dimensions remain the same. The bitmap image's size is defined by the image in the Library, and the size of the instance on the stage is based on the actual size of the image in the Library.
【野中訳】
注記: ActionScriptでは、ビットマップイメージの幅と高さは、[ライブラリ]アセットとしてすでに決まっているとしても指定する必要があります。違和感を覚えるでしょうが、これらの値は必須ではあるものの、Flash CS4では使われません。幅と高さの値をnew BitmapData(width, height)のステートメントで変更しても、Flash CS4ではそれらの値にかかわらず、大きさは変わりせん。ビットマップイメージのサイズは[ライブラリ]のイメージで決まります。ステージ上のインスタンスのサイズも、[ライブラリ]のイメージの実際のサイズにもとづきます。

03 Flash Professional CS5からのコンストラクタの呼出し
前項に述べたとおり、[ライブラリ]のビットマップに「自動生成された」クラスのコンストラクタはふたつの引数を結局使わず、とくに指定する意味がありません。そのため、Flash Professional CS5では、引数なしに呼出せるようになりました。以前のバージョンと同じく、ふたつの引数を渡しても動作は変わりません。つまり、引数はオプションになりました。

また、この改善はFlash Professional CS5に対して行われたようです。したがって、Flash Player 9に[パブリッシュ]するときも、CS5であればコンストラクタに引数は要りません。


作成者: 野中文雄
作成日: 2010年5月27日


Copyright © 2001-2010 Fumio Nonaka.  All rights reserved.