ライブラリ内のビットマップデータをスクリプトに書き出すときの注意

Flash CS3でライブラリ内にあるビットマップデータを右クリックし、リンケージから「ActionScriptに書き出し」をチェックし、クラス名をつけてやると、そのビットマップデータをスクリプトで操作することができます。例えばbook.pngというビットマップデータに、Bookというクラス名を付けてアクションスクリプトに書出す場合は、以下のように使用します。

var book:Book = new Book(0,0);
var bitmap:Bitmap = new Bitmap(book);
addChild(bitmap);

Bookコンストラクタにパラメータを渡していますが、これはBookクラスのマスタークラスがBitmapDataであり、BitmapDataはコンストラクタがwidthとheightを必要とするためです。本来ならば表示する画像の幅、高さを指定するのですが、ライブラリ内のビットマップデータのインスタンスを生成する場合は、x, ywidth, heightともに0を指定しておいても問題ないようです。(BitmapDataクラスはDisplayObjectクラスを継承していないので、これを直接addChild()することはできません。別にBitmapオブジェクトを作成し、コンストラクタのパラメータにBitmapDataの参照を渡してやります。)

さて、ここでちょいと困ったことが。例えば上記のような操作をした後、このBookというクラスをライブラリ内のビットマップデータではなく、カスタムクラスとして作成し直したいとします。ライブラリ内のbook.pngは不要なので削除し、新たに外部Book.asにBookクラスを作成します。仮に今度のBookクラスはコンストラクタにパラメータを取らないとしましょう。

当然作成したBookクラスオブジェクトは、以下のように生成します。

var book:Book = new Book();

ですが、Flashは依然としてBookクラスをBitmapDataのサブクラスとして認識しているのか、パブリッシュしようとするとコンパイラは「引数の数が正しくありません。正しくは2です。」とエラーを出力してしまいます。

うーん、困った。book.pngを削除する前に、リンケージ設定のActionScriptに書き出しのチェックを外してみたりもしたのですが、問題は解決できず。仕方なく別のクラス名をつけなくてはいけないというトホホな結果になってしまいました。どなたか解決方法をご存知の方がいらっしゃったら、教えてください。

【2007.11.05追記】
全部嘘でした。全部気のせいでした。ごめんなさい。ごめんなさい。これから僕の書く事は、すべてまず疑うところから始めてください。