複数関数からの戻り値returnの指定

このQ&Aのポイント
  • ActionScript3で複数の関数から戻り値を指定する方法について質問があります。処理1が終わった段階で戻り値を設定し、処理2に移動したいと考えていますが、現在のコードではエラーになってしまいます。どのように戻り値を設定することができるのかご教授願います。
  • ActionScript3で複数の関数から戻り値を指定する方法について質問があります。現在のコードでは、処理1の終了後に戻り値を指定することができず、エラーが発生しています。どのようにして処理後に戻り値を設定することができるのか分かりません。ご教授願います。
  • ActionScript3で複数の関数から戻り値を指定する方法について質問があります。処理1の終了後に戻り値を設定するためにはどのような方法がありますか?現在のコードではエラーが発生してしまい、戻り値を設定することができません。解決策をご教授願います。
回答を見る
  • ベストアンサー

複数関数からの戻り値returnの指定

いつもお世話になります。 ActionScrip3に関する質問です。 処理1が終わった段階で戻り値をreturnするという処理を 作成したく下記のように作りました。 流れとしては、関数func1の中に複数の処理があると仮定して、その一連の処理を完了させた 時点でevent.complete(処理完了)によりfunc2に移動し、func2から戻り値の値を 指定したいと考えております。 下記の処理を行ってもfunc1の中でreturnを指定していないので「関数は戻り値をかえしません」 というエラーになってしまいますが、下記の処理以外でも結構ですので、 「一定の処理完了後に戻り値(return)を発生」させる手段をご教授いただけないでしょうか? お手数ではありますが、何卒宜しくお願いいたします。 var bln:Boolean; bln = func1(); function func1():Boolean {  // ここに複数の処理があると仮定する  // 終了後イベント  addEventListener(event.COMPLETE, finish);    function finish() {   return false;  } }

  • Flash
  • 回答数2
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

一回のコードの実行のなかで画像のロードを 待つってことはできないです だからロード完了のイベントを待って 戻り値を返すなんて事はできません スレッド系統のライブラリがあれば できないこともない… …ってこともないです あれも結局イベントをまって次の コード実行に移ってるだけなので やっぱり戻り値を返すのを待つ なんてことはできません なんでfinishで画像を読み込んだ続きの処理を 直接実行させたくないのか? 答えはそれによるんですが 単純にコードを簡単にしたいとか そういう理由ならあきらめて finishで続きの処理を実行させるようにしましょう おそらくそれが一番単純で簡単です もしそうじゃないなら 例えば、このfunc1を違う引数で実行して 違う画像をロードしてその画像に基づいた 情報を利用する処理が複数ある、というならば その違う画像をロードするfunc1で作った それぞれのLoaderを戻り値にして それぞれにそれぞれのCOMPLETEを待たせるとかしましょう 読み込みの完了を待って戻り値を返す事はできません あるいは、このfunc1の画像が読み込まれた後に それを利用して実行する続きの処理は 全然違う所にあって処理のタイミングが はかれないんだっていうなら カスタムイベントを使いましょう (もしかしてdispatchEventしたかったの? っていったのはこれです) 場合によってはEventクラスを拡張して プロパティを乗っけてやるのも手です

John12345
質問者

お礼

H240S18B73様 ご回答ありがとう御座います。 上記でアドバイスしていただいている内容とは違う方法でですが、 解決することができました。 ありがとう御座いました。

その他の回答 (1)

回答No.1

いろいろとわからないです 単純にこのコードのなかでfunc1()の次にfunc2を実行するのでは いけない理由はなんでしょう? func2は別のインスタンスに書かれてるコードなんでしょうか? このコードはURLLoaderとかLoaderの 拡張クラスに書いてるコードなんですか? 僕の知る限りではCOMPLETEイベントは外部ファイル読み込みクラスの 画像やテキストのロード完了ぐらいでしか発信されないです なんのロードのCOMPLETE待ってるんですか? もしかしてdispatchEvent(new Event(Event.COMPLETE))したかったんでしょうか? 推測で返答しますが、別に画像やテキストのロードを待ってる訳じゃなく 『func1の戻り値を使ってfunc2を実行したい』だけなんだと踏んで返答します イベント関係をいじくって回りくどくやらなくてもfunc1には最後に普通に戻り値をreturnさせて func2(func1()) とやってやればfunc1を実行してからその戻り値を使ってfunc2を実行するようになってます

John12345
質問者

お礼

ご回答ありがとう御座います。 説明不足で申し訳御座いません。 下記インラインにて回答します。 >func2は別のインスタンスに書かれてるコードなんでしょうか? 先ず、func2ではなく、上記のソースにある通りfinishでした。 インスタンスやクラス等の場所は変わらず、func1とfinishを 実行する場所は同じ場所です。 >なんのロードのCOMPLETE待ってるんですか? 外部の画像のロードCOMPLETEを待っています。 func1で外部画像のロードを待ち、画像のロードが完了したら、 event.COMPLETEでfinishに移動し、戻り値を返したいと考えています。 画像ロードを待ってから戻り値を返せる手段があれば、 上記の方法でなくても構いません。 処理方法をご教授いただけると幸いです。 何度もお手数お掛けしますが、宜しくお願い申し上げます。

関連するQ&A

  • 複数の関数の中から戻り値の戻し方

    お世話になります。 ActionScript3の戻り値に関するご質問です。 下記ソースのfunc1の処理があり、その中の処理が全て終わった 段階でcompleteイベントを発生させ、 そこで戻り値をblnに戻したいと考えております。 func1の中で戻り値を指定していないので 『関数は値を返しません』というエラーになるのですが、 func1の中にある処理が全て完了した後のCOMPLETEイベントの中から 戻り値を返すにはどのように処理すれば良いでしょうか? お手数ではありますが、宜しくお願いいたします。 var bln:Boolean; bln = func1(); function func1():Boolean {  // 処理(ここには複数の処理がある)  twn.insert(TweenMax.to(contents, 0.7, {autoAlpha:1, ease:Quad.easeOut}));  // 終了後イベント  twn.addEventListener(TweenEvent.COMPLETE, function() {   return false;  }); }

  • 下記のような関数から外部からの戻り値を返したいのですが

    下記のような関数から外部からの戻り値を返したいのですが 良い方法はございませんでしょうか? 例えば trace( test( "test" ) ); このように戻り値を返す関数にしたいです。 function test( strData:String ):String { var variables:URLVariables = new URLVariables(); variables.data = strData; var request:URLRequest = new URLRequest(); request.url = "http://test.asp"; request.data = variables; request.method = URLRequestMethod.POST; var loader = new URLLoader(); loader.addEventListener(Event.COMPLETE , function(event) { var retValue:String = new String(event.target.data); }); loader.load(request); //return ???? }

    • ベストアンサー
    • Flash
  • oracleのfunctionで戻り値複数個

    oracleのストアドプロシージャのファンクションについてですが、 ファンクションは、戻り値を返すことができますが、 それを、複数個返すことはできるのでしょうか。 CREATE [OR REPLACE] FUNCTION ファンクション名(引数 IN データ型[, ...]) RETURN 戻り値の型 IS 宣言部 BEGIN 処理部 END ; お願いします。

  • returnの戻り値について

    以前の質問を見ていてひとつわからないことがあるのです。 内容をそのままコピーしたのですが、この場合、キーが押されたときに関数を呼び出し、 returnで戻り値が「true/false」とありますが、戻ってきたときはどこにtrue/falseが入っているのですか? <BODY> <FORM NAME="f" ACTION="UPDATE" METHOD="POST" TARGET="FRAME_D" onSubmit="return conf();"> <INPUT TYPE="TEXT" NAME="FM_KINGAKU" onKeyDown="return keyCheck(event.keyCode);" > <SCRIPT TYPE="text/javascript" SRC="./JS.SOURCE"></SCRIPT> <SCRIPT TYPE="text/javascript"> <!-- function keyCheck(keyCodes){ if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8) return true; else return false; } // --> </SCRIPT> </FORM> </BODY>

  • main関数の戻り値について

    c言語において、main関数の戻り値は何を意味しているのですか。 また、void型にすれば、main関数の戻り値を書かなくても問題無いでしょうか。 また、関数はreturn文を書かなくても、最後まで処理を実行すると終了するらしいですが、void型にすれば、main関数でreturn文を書かなくても問題無いでしょうか。

  • 無名関数を使うメリットは何ですか?

    Javascriptに限らず、多くのプログラム言語で無名関数が使えると思います。以下の2つの記述法は、挙動に違いは全くありませんよね? function func() { return "普通の関数です。"; } var func = function() { return "無名関数です。"; } なぜ無名関数を使うのか調べてみたところ、「最近Ajaxが流行ってきてライブラリを使う機会が増えてきた。それらを利用する際、関数の名前が重複して誤作動するのを防げる」という答えを見つけました。しかし試してみたところ var func = function() { return "無名関数1です。"; } var func = function() { return "無名関数2です。"; } alert(func()); のように名前が被った場合、従来と同じで後に書かれた関数が動作します。イベント駆動型関数を無名関数にするメリットは分かります。たとえば window.onload = function() { alert("ウィンドウの読み込みが完了しました。"); } と書けば、他の関数との衝突によってこの関数が動作しないことはありません(ライブラリを使ってwindow.onloadが重複してしまったら別問題ですが)。 結局のところ、無名関数を使うメリットは何なのでしょうか?

  • 本文ではなく、returnへほとんどの処理を記述

    ・本文ではなく、returnへほとんどの処理を記述しているコードがあります ・どういう意図があるのでしょうか? ・複数の関数をreturnする関数が、たくさんあります ・どの関数も、関数本文より、returnする関数内容の方が何倍も多いです hoge = function(){  //中略   return {    a : function(){   },    b : function(){  //これが延々続く  //return関数内で即時関数実行したり ■質問1 ・処理の結果をreturnすると思っていたのですが、returnメインでそこに処理を記述していくやり方のメリットは? ■質問2 ・hoge.aでアクセスしているのですが、関数定義=オブジェクト定義でしょうか? ・下記aメソッドは、同じ意味? hoge = {  a: function(){ hoge = function(){  //中略   return {    a : function(){   },

  • 関数から戻り値を得る方法について

    知り合いの方から関数の戻り値をえるときにreturn以外に例えば File(&i,&k);←関数呼び出し int File(int **j, double *k)←関数 {      ~      ~ } とやると(double *k)は関数からの出力として、呼び出しているFile(&i,&k)の(&k)に返されると聞きました。しかも、戻り値はint File()のintに依存しないと言われて試してみたのですが、どうもうまくいきません。 正しいやり方知っている方いましたら、教えて下さい。あと複数戻り値を返したいときはどうすればいいんでしょうか?

  • 関数の戻り値が複数ある場合

    C言語初心者です。 関数の戻り値を返す場合、return 変数名;と記述しますよね。 配列を返す場合、ポインタを使用しないで返すにはどうしたらいいですか? 例えば合計と平均を計算する関数があり その結果を配列に入れてmainに返すなど。 以前他の方の質問のコメントに 配列の要素が固定であれば、構造体にして返す方法もあります。 struct array { int x[10]; }; struct array func() {  struct array a;  ...  return a; } -- とあったのですが、構造体の要素が全てint型ならば 配列ではダメなのですか?

  • JavaScriptのreturnについて教えて

    ■Q1 ・JavaScriptで「return」に何も指定しなかった場合、戻り値は何でしょうか? ・「return false」とは意味が異なるでしょうか? ・「return true」と同じ意味? ■Q2 ・「それ以降の処理を中止したい」という意図で使用する場合、「return」も「return false」も同じ結果となるでしょうか? ・違うのは、戻り値だけ? ■Q3 ・「return false」と「returnを記述しない」では何が違うでしょうか? ■Q4 ・「イベントのバブリング」は、「戻り値の有無」とは関係がない話でしょうか? ■Q5 ・「return false」が適用されるのは「onclick」だけ? それとも「イベント全般」? ■Q6 ・イベントが絡まない箇所で、「return false」を使用することはない?

専門家に質問してみよう