Macromedia Flash非公式テクニカルノート XML.onLoadメソッドで変数の設定/参照ができない
Platform: All 1. 現象 2. 原因 省略時に参照されるパスは、Flash 5スタンドアローンプレーヤーあるいはFlash Player 5.0r30ではメインのタイムライン('_root')、r41およびr42ではXMLオブジェクトが生成されたタイムラインとなります。したがって、ターゲットパスを指定しないと、グローバル変数の設定・参照されるパスが、Flash 5 Playerのバージョンによって異なってしまう結果になります。 3. 対処法 もっと汎用性のある手法としては、コールバック関数を定義するときに、ターゲットパスと変数名をXMLオブジェクトのプロパティに設定することが考えられます。以下のサンプルスクリプトでは、XMLオブジェクトを生成したMovieClipをターゲットパスとして指定し、変数名を「sResult」としています。コールバック関数xOnLoadは、XMLデータが正しくロードされたかどうかの結果('true/false')をMovieClipの変数「sResult」に設定します。 // [テストサンプルスクリプト] スクリプトの処理につきましては、付記された注釈をご参照ください。若干の補足だけいたします。[3][4]では、XMLオブジェクトのプロパティとして、ターゲットパスと変数名を設定しています。ターゲットパスに設定された'this'は、スクリプトの記述されたタイムライン(MovieClip)を参照します。 [7]では、「ターゲットパス[変数名]」というブラケットアクセスで、設定する変数を参照しています。これは、変数名がストリングで指定されているためです。'eval'関数を使って「eval(ターゲットパス+"."+変数名)」とすることも可能です(Macromediaテクニカルノート「tellTargetをFlash 5のアクションに書きかえるには」参照)。また、コールバック関数xOnLoadの中で参照されている'this'は、MovieClipで生成されたXMLオブジェクトであることにご注意ください。 _____ 作成者: 野中文雄 Copyright © 2001-2006 Fumio Nonaka. All rights reserved. |
|||