- ベストアンサー
複数関数からの戻り値returnの指定
- ActionScript3で複数の関数から戻り値を指定する方法について質問があります。処理1が終わった段階で戻り値を設定し、処理2に移動したいと考えていますが、現在のコードではエラーになってしまいます。どのように戻り値を設定することができるのかご教授願います。
- ActionScript3で複数の関数から戻り値を指定する方法について質問があります。現在のコードでは、処理1の終了後に戻り値を指定することができず、エラーが発生しています。どのようにして処理後に戻り値を設定することができるのか分かりません。ご教授願います。
- ActionScript3で複数の関数から戻り値を指定する方法について質問があります。処理1の終了後に戻り値を設定するためにはどのような方法がありますか?現在のコードではエラーが発生してしまい、戻り値を設定することができません。解決策をご教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一回のコードの実行のなかで画像のロードを 待つってことはできないです だからロード完了のイベントを待って 戻り値を返すなんて事はできません スレッド系統のライブラリがあれば できないこともない… …ってこともないです あれも結局イベントをまって次の コード実行に移ってるだけなので やっぱり戻り値を返すのを待つ なんてことはできません なんでfinishで画像を読み込んだ続きの処理を 直接実行させたくないのか? 答えはそれによるんですが 単純にコードを簡単にしたいとか そういう理由ならあきらめて finishで続きの処理を実行させるようにしましょう おそらくそれが一番単純で簡単です もしそうじゃないなら 例えば、このfunc1を違う引数で実行して 違う画像をロードしてその画像に基づいた 情報を利用する処理が複数ある、というならば その違う画像をロードするfunc1で作った それぞれのLoaderを戻り値にして それぞれにそれぞれのCOMPLETEを待たせるとかしましょう 読み込みの完了を待って戻り値を返す事はできません あるいは、このfunc1の画像が読み込まれた後に それを利用して実行する続きの処理は 全然違う所にあって処理のタイミングが はかれないんだっていうなら カスタムイベントを使いましょう (もしかしてdispatchEventしたかったの? っていったのはこれです) 場合によってはEventクラスを拡張して プロパティを乗っけてやるのも手です
その他の回答 (1)
- H240S18B73
- ベストアンサー率65% (190/288)
いろいろとわからないです 単純にこのコードのなかでfunc1()の次にfunc2を実行するのでは いけない理由はなんでしょう? func2は別のインスタンスに書かれてるコードなんでしょうか? このコードはURLLoaderとかLoaderの 拡張クラスに書いてるコードなんですか? 僕の知る限りではCOMPLETEイベントは外部ファイル読み込みクラスの 画像やテキストのロード完了ぐらいでしか発信されないです なんのロードのCOMPLETE待ってるんですか? もしかしてdispatchEvent(new Event(Event.COMPLETE))したかったんでしょうか? 推測で返答しますが、別に画像やテキストのロードを待ってる訳じゃなく 『func1の戻り値を使ってfunc2を実行したい』だけなんだと踏んで返答します イベント関係をいじくって回りくどくやらなくてもfunc1には最後に普通に戻り値をreturnさせて func2(func1()) とやってやればfunc1を実行してからその戻り値を使ってfunc2を実行するようになってます
お礼
ご回答ありがとう御座います。 説明不足で申し訳御座いません。 下記インラインにて回答します。 >func2は別のインスタンスに書かれてるコードなんでしょうか? 先ず、func2ではなく、上記のソースにある通りfinishでした。 インスタンスやクラス等の場所は変わらず、func1とfinishを 実行する場所は同じ場所です。 >なんのロードのCOMPLETE待ってるんですか? 外部の画像のロードCOMPLETEを待っています。 func1で外部画像のロードを待ち、画像のロードが完了したら、 event.COMPLETEでfinishに移動し、戻り値を返したいと考えています。 画像ロードを待ってから戻り値を返せる手段があれば、 上記の方法でなくても構いません。 処理方法をご教授いただけると幸いです。 何度もお手数お掛けしますが、宜しくお願い申し上げます。
お礼
H240S18B73様 ご回答ありがとう御座います。 上記でアドバイスしていただいている内容とは違う方法でですが、 解決することができました。 ありがとう御座いました。