メイン コーダーズルーム【スクリプト系】 XML.onLoadをクラス内で記述すると上手く動かないのですが | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tiffin | Åê¹ÆNo.6836 投稿日時: 2004-5-3 16:24 |
新米 居住地: 神奈川 投稿: 13
使用環境:
7.0.1Win2k-Pro(SP4) |
XML.onLoadをクラス内で記述すると上手く動かないのですが 下記のコードでXMLTESTをコールすると、XMLDOC.onLoadがonXMLLoadをコールして欲しいのですが、期待通りに動かず困っています。
このコードをタイムラインに(ちょっと修正して)記述したころ、問題なく動きました。 調べてみたところ、XMLDOC.onLoad内のtrace(this);では、XMLファイルの内容がそのまま出力されています。 アドバイス頂けますでしょうか。
|
pinkgear | Åê¹ÆNo.6837 投稿日時: 2004-5-3 17:48 |
半人前 居住地: 投稿: 35
使用環境:
Mac OS X 10.4.2, Studio MX 2004 w Flash MX Pro |
Re: XML.onLoadをクラス内で記述すると上手く動かないのですが ども。
#「期待通り」という部分は、コールされないという解釈でいいのか分かりませんが。 試してないのですが、これではどうでしょうか。
|
野中文雄 | Åê¹ÆNo.6838 投稿日時: 2004-5-3 19:35 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: XML.onLoadをクラス内で記述すると上手く動かないのですが コールバック関数のブロック内では、thisは関数を定義したインスタンスを参照します。
引用: tiffinさんは書きました: |
tiffin | Åê¹ÆNo.6907 投稿日時: 2004-5-6 10:51 |
新米 居住地: 神奈川 投稿: 13
使用環境:
7.0.1Win2k-Pro(SP4) |
Re: XML.onLoadをクラス内で記述すると上手く動かないのですが pinkgearさん、野中さん、アドバイス有難うございます。
thisは関数を定義したインスタンスが返ってくるのですね。勉強になりました。 期待通りに動かない原因は、XMLDOCをstatic宣言していなかったためのようです。(不思議ですが。) |
princessMK | Åê¹ÆNo.7270 投稿日時: 2004-5-13 20:49 |
新米 居住地: 投稿: 1
使用環境:
|
Re: XML.onLoadをクラス内で記述すると上手く動かないのですが //var childNodesList:Array = XMLDOC.firstChild.childNodes;
var childNodesList:Array = this.valueOf().firstChild.childNodes; のように書き換えたら、ノードにアクセスできるようになります。 |
野中文雄 | Åê¹ÆNo.7273 投稿日時: 2004-5-13 21:52 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: XML.onLoadをクラス内で記述すると上手く動かないのですが ターゲットさえ正しく指定すれば、動作すると思います。
引用: tiffinさんは書きました:
this.valueOf()は、thisと同値ではありませんか? 引用: princessMKさんは書きました: |
nao | Åê¹ÆNo.8706 投稿日時: 2004-6-29 2:54 |
職人 居住地: 投稿: 208
使用環境:
WinXP Pro Flash8 Professional |
Re: XML.onLoadをクラス内で記述すると上手く動かないのですが すいません…いまさらながら便乗の質問していいでしょうか?
(新規で立てた方がよければ立て直します.) 可視性についての質問です. 先にある質問のコードを引用させていただきます.
上記のコードで[onXMLLoad()]が呼ばれるのは実際はXMLクラスのインスタンスですよね? ActionScript2.0では[private]は同一クラス及びそのサブクラスから. [public]はどこかれでもOK. だとすると可視性を[private]でなくて[public]の方がいいのでは? と思うんですがなぜ[private]としてもエラーではないのでしょうか? よろしくお願いします.
|
野中文雄 | Åê¹ÆNo.8710 投稿日時: 2004-6-29 4:10 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: XML.onLoadをクラス内で記述すると上手く動かないのですが XML.onLoadメソッドは、XMLインスタンスXMLDOCに定義されています。したがって、そのコールバック関数のブロック内はXMLインスタンスXMLDOCがthis参照となり、onXMLLoad()メソッドはそこから呼出されることになります。
引用: Naoさんは書きました: ActionScript 2.0のprivateキーワードの意味は、そのとおりです。 引用: ActionScript2.0では[private]は同一クラス及びそのサブクラスから. よいご質問ですね。 ownerがローカル変数であることに、ご注目ください。 function(メソッド)内で名前のない関数を定義すると、その関数プロック内のスコープは外側のfunctionのものが保持されます。つまり、感覚的にいいますと、XML.onLoadメソッドのコールパック関数内でありながら、なおXMLTEST()メソッドのスコープ内といえるのです。 結果として、XMLTEST()メソッドからの呼出しということになりますので、クラスのprivateインスタンスメソッドであるonXMLLoad()を呼出すことができます。 ローカル変数に対するスコープは、「Activationオブジェクト」により管理されます。 引用: だとすると可視性を[private]でなくて[public]の方がいいのでは? |
nao | Åê¹ÆNo.8737 投稿日時: 2004-6-30 1:26 |
職人 居住地: 投稿: 208
使用環境:
WinXP Pro Flash8 Professional |
Re: XML.onLoadをクラス内で記述すると上手く動かないのですが 野中さん毎度ありがとうございます.
XMLTEST()メソッドによって生成されたActivationObject越しに onXMLLoadが呼ばれているのでそれはprivateでもいいということですね. なんか分かったような気がします.
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |