サイトトップ

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

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

外部SWFに配置したComboBoxが開かない

ID: FN0401002 Product: Flash

Platform: All
Version: MX 2004

1. 現象
外部SWFファイルにFlash MX 2004のComboBoxコンポーネントを配置して、loadMovie()アクションまたはMovieClip.loadMovie()メソッドでロードすると、ComboBoxインスタンスをクリックしてもドロップダウンリストが開きません。

2. 原因
外部SWFファイルに配置したComboBoxコンポーネントは、別のムービーからロードすると、正しく動作しないようです。ComboBoxインスタンスをクリックするとハイライトはするものの、ドロップダウンリストが表示されません(サンプルSWF/ソースFLAファイル: ComboBoxBug.zip 約89KB)。

3. 対処法
ComboBoxコンポーネントは、外部SWFファイルとしてロードすると、正しく動作しないようです。ComboBoxコンポーネントは、読込み元ムービーの[ライブラリ]内に配置しておく必要があります。

この問題は、Flash MX 2004 7.2アップデータで改善されました。ロードするターゲットとなるMovieClipインスタンスのMovieClip._lockrootプロパティをtrueに設定すると、外部SWFファイルに配置したComboBoxコンポーネントのドロップダウンリストが正常に開きます。このとき、ComboBoxコンポーネントは、アップデータに同梱されているものを使用する必要があります(7.1のComboBoxコンポーネントは、MovieClip._lockrootを設定しても動作しません)。

MoiveClip._lockrootプロパティは、外部SWFをロードする際のステートメント(スクリプト001)かターゲットのインスタンスに設定したMovieClipアクションonClipEvent (load)ハンドラ内(スクリプト002)に記述します。インスタンスに外部SWFをロードしても、このプロパティの設定はクリアされません。また、ロードされる外部SWFムービー内に記述したのでは、正しく動作しませんので、ご注意ください。

スクリプト001■外部SWFをロードするステートメントの前にMovieClip._lockrootプロパティを設定

// フレームアクション
this.my_mc._lockroot = true;
this.my_mc.loadMovie("ExternalComboBox.swf");


スクリプト002■外部SWFをロードするターゲットのMovieClipアクションでMovieClip._lockrootプロパティを設定

// MovieClip: 外部SWFをロードするターゲットのインスタンス
// MovieClipアクション
onClipEvent (load) {
   this._lockroot = true;
}

_____

作成者: 野中文雄
更新日: 2004年9月17日 7.2アップデータで採用されたMovieClip._lockrootについて解説を追加
作成日: 2004年1月21日


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