メイン コーダーズルーム【スクリプト系】
クラス間のデータのやり取りについて | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| balance | Åê¹ÆNo.33285 投稿日時: 2007-5-9 15:31 |
半人前 ![]() ![]() 居住地: 投稿: 31
使用環境:
win XP , Flash8 |
クラス間のデータのやり取りについて 毎回お世話になっています。
今回、クラス間のデータのやり取りで、つまづいてしまいました。 今回の目的は、指定したxmlノードのデータを traceしようとすることです。 以下のxmlデータを読み込み、処理しようとしています。 クラスは2つ用意しています。 XMLを読み込むクラス XMLLoader.as 先ほどのXMLLoaderクラスを使って指定したノードをtraceするクラス Init.as flaファイルの_root第一フレームには と書いてあります。 これでInitクラスを実行させ、XMLLoaderクラスから データを取りにいっています。 これでも指定したノードのデータをtraceできますが、 次の例のように、 Init.as とし、XMLLoader.loadXMLを実行するだけで 値を返してくれて、data_objに指定ノードを格納したいのです。 その為に、下記のようにXMLLoaderクラスを書き直しました。 XMLLoader.as しかし、これでは ---------------実行結果-------------------- このスコープから 'this' にアクセスできません。 var target:Object = this; ------------------------------------------- このようにエラーが出てしまいます。 エラーがなくても、returnするタイミングが おかしいかと思います。 どのようにすれば正しくreturnし、 Initクラスから XMLLoader.loadXMLで呼び出し、 正しく値を返してくれるのでしょうか。 かなり長くなってしまいました。 よろしくお願いします。 |
| nekoyuki | Åê¹ÆNo.33287 投稿日時: 2007-5-9 15:59 |
半人前 ![]() ![]() 居住地: 大阪府 投稿: 48
使用環境:
FLASH CS3 Professional XP Pro(SP2) |
Re: クラス間のデータのやり取りについて 一連の処理の流れでXMLのデータを読み込むのは不可能です。
データを読み込むまでその後の処理を待機させる方法をとって見たらどうでしょうか? 引用:
|
| balance | Åê¹ÆNo.33288 投稿日時: 2007-5-9 17:57 |
半人前 ![]() ![]() 居住地: 投稿: 31
使用環境:
win XP , Flash8 |
Re: クラス間のデータのやり取りについて nekoyukiさん
ありがとうございます。 >データを読み込むまでその後の処理を待機させる方法 thisが使えないとなると、staticなメソッドは止め、 読み込んだ後に処理を呼び出せばいいでしょうか。 このようにnew XMLLoader()で新しくインスタンスを作り、 XMLLoaderではもう一つ関数を作り、 そこでreturnすればいいのでしょうか。 (上に上げた例ではtraceしている) ここでどのようにreturnすれば、XMLLoaderをnewした箇所に 値が返るかが分かりません。 一つ言い忘れました。 最初の投稿で書いた最初の例(callBackメソッドで値を取る方法)は、 書籍Flash OOPの『MovieClipベースか、classベースでスクリプトを組むか』 という項を参考にしたものです。 (今、手元に本がないので、詳しい名前、ページは分かりません。すみません。) Flash OOPの本では前者のように値を取得していましたが、 後者のようにXMLLoaderをnewしただけで値を取得できるように したいと考えました。 よろしくお願いします。 |
| 野中文雄 | Åê¹ÆNo.33291 投稿日時: 2007-5-9 21:00 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: クラス間のデータのやり取りについて 今不在の相手に電話して、問合せの回答を得るためには、折返しの連絡先を伝言して、その返事を待たなければなりません。その連絡先が、もとのXMLLoader.loadXML()メソッドに渡した引数callBackです。
balanceさんのやられようとしていることは、不在相手に電話したそのときに、何とかして回答を得たいというものです。つまり、無理です。 電話を受けた窓口のXMLLoaderは、いくら金を積まれようが、その時点で返せる情報はありません。引用: balanceさんは書きました: XMLLoaderクラスは静的なメソッドしかもちませんので、「new」していないですよね。 flaファイルのフレームアクションでnew Int()を呼出している部分のことだと解釈しましたけど。引用: ここでどのようにreturnすれば、XMLLoaderをnewした箇所に 指定ノードをtrace()するだけのことは、可能です。ですから、離席した相手が戻ったとき、誰かに回答を伝えるように処理すること自体はできるはずです。なぜ連絡先(callBack)を教えたくないのか、その代替として何か別の相手を考えなければならないでしょう。 まいどありがとうございます。 CHAPTER 13「Flashのコーディング手法」のp.397以下ですね。引用: 最初の投稿で書いた最初の例(callBackメソッドで値を取る方法)は、 |
| balance | Åê¹ÆNo.33305 投稿日時: 2007-5-11 15:41 |
半人前 ![]() ![]() 居住地: 投稿: 31
使用環境:
win XP , Flash8 |
Re: クラス間のデータのやり取りについて 野中さん
ありがとうございます。 意味が分かりました。 引数callBackは、例えば、MovieClipLoaderクラスの onLoadCompleteやonLoadProgressのような役目なのですね。 ひとつお聞きしたいのですが、 引用: XMLLoaderクラスは静的なメソッドしかもちませんので、「new」していないですよね。 var hoge = new XMLLoader(); これでは、今回の場合、newした事にはならないのでしょうか。 引用: まいどありがとうございます。CHAPTER 13「Flashのコーディング手法」のp.397以下ですね。 そうです。今勉強させてもらっています! また助けて頂いてありがとうございます! |
| ひろゆき | Åê¹ÆNo.33311 投稿日時: 2007-5-11 16:50 |
ちょんまげら ![]() ![]() 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CCSafari 6.1 |
Re: クラス間のデータのやり取りについて 引用:
balanceさんは書きました: コンストラクタがないからではないでしょうか?
|
| balance | Åê¹ÆNo.33317 投稿日時: 2007-5-11 18:19 |
半人前 ![]() ![]() 居住地: 投稿: 31
使用環境:
win XP , Flash8 |
Re: クラス間のデータのやり取りについて ひろゆきさん
コンストラクタで何か処理をしないと、 『newする』とは言わないのですね。 何も処理がなくても言うものだと思っていました。 ありがとうございます! |
| 野中文雄 | Åê¹ÆNo.33319 投稿日時: 2007-5-14 0:21 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: クラス間のデータのやり取りについて
|
| balance | Åê¹ÆNo.33320 投稿日時: 2007-5-14 19:06 |
半人前 ![]() ![]() 居住地: 投稿: 31
使用環境:
win XP , Flash8 |
Re: クラス間のデータのやり取りについて 野中さん
いえいえ、有難うございます。 今回も勉強させて頂きました! |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン



FLASH CS3 Professional
XP Pro(SP2)

.6.8
電話を受けた窓口のXMLLoaderは、いくら金を積まれようが、その時点で返せる情報はありません。
flaファイルのフレームアクションでnew Int()を呼出している部分のことだと解釈しましたけど。



