Macromedia Flash非公式テクニカルノート ScrollBarコンポーネントのスクロールバーがアクティブにならない
Platform: All 1. 現象 2. 原因 たとえば、以下のスクリプトが典型的な例です。外部テキストファイルText.txt(ムービーと同階層に配置)には変数名myTextにテキストが設定してあり、メインのタイムラインには同名の変数を設定したTextFieldが配置されているものとします。 // [問題が発生するスクリプトの例] //テキストファイルText.txtの内容 ScrollBarコンポーネントは、TextFieldオブジェクトを前提としてスクロールバーのコントロールを行っています。TextFieldのプロパティを使わずに変数に対して直接テキストを設定すると、ScrollBarコンポーネントがテキストの内容変更を認識することができません。そのため、最初TextFieldが空であれば、スクロールバーはアクティブになりません。この動作は、ScrollBarコンポーネントの仕様です。 3. 対処法 外部テキストファイルからテキストを読込んで設定している場合には、スクリプトの修正が必要になります。変数名を設定したTextFieldには、外部テキストをロードすると、同じ変数名の値(テキスト)は自動的に読込まれます。これに対して、'TextField.text'プロパティには、スクリプトで明示的にテキストを設定しなければなりません。そのためには、外部テキストファイルの読込みを待つ処理が必要になります。 'MovieClip.loadVariables'メソッドを使って、外部テキストファイルの読込み待ちを行うスクリプトについては、Macromediaテクニカルノート「外部テキストファイルを読込む 」をご参照ください。以下には、LoadVarsオブジェクトを使用したサンプルスクリプトを掲げます(なお、スクリプトの処理内容について、詳しくは「LoadVarsオブジェクトを使った外部テキストファイルの読込み」を併せてご参照ください)。 // [外部テキストの読込みを待ってTextFieldにテキストを設定するスクリプトの例] [注記] FScrollBarClass内の処理(中・上級者向け情報) this.textField.watch("text", this.callback); 'Object.watch'メソッドは、指定したプロパティが変更されたときに呼出すコールバック関数を設定します。上記のステートメントは、ScrollBarインスタンスを設定したTextFieldの'text'プロパティを変更すると、メソッドcallbackを呼出すように指定しています。callbackメソッドは、その'function'中でonTextChangedメソッドを実行する処理を行います。 したがって、ScrollBarインスタンスを設定したTextFieldの'text'プロパティを変更すると、onTextChangedメソッドが呼出されて、スクロールバーのアップデートなどテキスト変更に伴う処理が行われることになるのです。 _____ 作成者: 野中文雄 Copyright © 2001-2006 Fumio Nonaka. All rights reserved. |
|||