サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

returnステートメント

ID: FN0605002 Product: Flash

Platform: All
Version: Flash MX 2004 and above

シンタックス
return [expression]

引数
expression:Object - 関数の値として評価して返す式。式の値は、ストリングや数値、ブール(論理)値などのプリミティブ値のほか、配列(Array)その他のオブジェクトなど任意のデータ型が指定できます。この引数は省略可能です。

説明
関数から返される値を指定します。returnステートメントは式expressionを評価したうえで、その結果をステートメントが実行された関数の値として返します[*1]

returnステートメントは、関数の実行をそこで中断して、制御を直ちに関数の呼出し元に戻します。return文の後にまだ処理されていない関数本体のステートメントがあっても、その処理は行われません。

returnステートメントは、式を指定しないで用いることができます。また、関数本体にreturnステートメントを、記述しなくても問題はありません。式を指定しないreturnステートメントが実行された場合や、returnステートメントがないまま関数本体の処理が終了したとき、関数の戻り値は未定義値undefinedとして扱われます。

なお、関数本体以外にreturnステートメントを記述することはできません。

[*1] returnステートメントで複数の値を返すことはできません。カンマ(,)区切りで、複数の値を指定すると最後の値だけが返されます。たとえば、つぎの例では変数cの値が返されます。

  return a, b, c;

関数の戻り値として複数の値を返したい場合は、returnステートメントの後に配列(Array)またはObjectインスタンスを指定します。

  return [a, b, c];  // 配列を返す


つぎのスクリプト(スクリプト001)をMovieClipシンボルの第1フレームアクションとして記述すると、インスタンスはマウスポインタの方向に回転します(図001。MovieClipインスタンスの向きは、X軸正方向つまり右向きを起点とします)。関数xRotate()およびxRadiansToDegrees()の本体内で、returnステートメントを用いています。

図001■MovieClipがマウスポインタの方向に回転する
return.swf

スクリプト001■MovieClipをマウスポインタの方向に回転させる

// MovieClip: _root.my_mc
// 第1フレームアクション
// ActionScript 2.0使用
var nSensitivity:Number = 0.2;
function onEnterFrame():Void {
  var nRadian:Number = Math.atan2(_ymouse, _xmouse);
  xRotate(nRadian*nSensitivity);
}
function xRotate(nRadian:Number):Void {
  if (isNaN(nRadian)) return;  // 値は返さずに実行を終了
  var nDegree:Number = xRadiansToDegrees(nRadian);
  _rotation += nDegree;
}
function xRadiansToDegrees(nRadian:Number):Number {
  var nDegree:Number = nRadian/Math.PI*180;
  return nDegree;  // 度数に変換した角度を返す
}

関数xRotate()は、引数として角度をラジアン値で受取ると、その指定された角度だけイージングのかかったアニメーションで回転します。関数本体の最初のifステートメントで、isNaN()関数により引数がNaNと評価されると[*2]returnステートメントにより関数の実行が中断されます。returnに式が指定されていませんので、戻り値を調べればundefinedになります。

関数xRadiansToDegrees()は、ラジアン値の角度を引数として受取ると、その値を度数に変換します。そして、その度数値をreturnステートメントにより、関数の値として返します。

[*2] 引数はNumber型で指定されていますので、実際にはundefinedNaNif条件でtrueと評価されることになります。

もっとも、スクリプト001の処理において、実際に関数xRotate()にこれらの値が引数として渡される可能性はありません。このifステートメントは、関数xRotate()が汎用的に用いられる場合に備えた例外的な処理といえます。

Player
ActionScript 1.0/Flash Player 5以降。

_____

作成者: 野中文雄
作成日: 2006年5月21日


Copyright © 2001-2008 Fumio Nonaka.  All rights reserved.