関数
関数(function)とは
- 西暦を昭和に変換するスクリプトを書きます
- 1975年は昭和何年?
var showa:Number; showa = 1975 - 1925; trace("1975年は、昭和" + showa + "年です。");
しかし、この場合は「値」が変数の中に入っていて答えは決まっています。
すべての変換にこれをしていたら、記述の量が膨大になってしまいます。
それをまとめて使いやすくするのが「関数」です。
function 関数名(引数){
//関数として実行したい内容
return (戻り値)
}
- 関数とは「function」というキーワードを使って、「ブロックにまとめた処理」に名前をつけたもの
- 関数は、「引数」というものを受け取って、「戻り値」というものを返すことができる
ローカル変数
- functionの中だけで適用
function calc(a, b) { var a:Number; var b:Number; var c:Number; c = a + b; return c; } trace(calc(2, 10));
関数の名前
- 変数の名前の付け方と同じルール
引数と戻り値
- 「引数」は、関数が受け取るパラメータ
-
- 西暦と昭和の変換をまとめると
- 西暦の年を受け取り、昭和の年を返す
function yearWorldToShowa(world:Number):Number { var showa:Number = world - 1925; return showa; }
関数の呼び出し
- 関数を使うこと
var year:Number; year = yearWorldToShowa( 1975 ); //1975で関数呼び出し trace("1975年は、昭和" + year + "年です"); year = yearWorldToShowa( 1945 ); //1945で関数呼び出し trace("1945年は、昭和" + year + "年です"); year = yearWorldToShowa( 1960 ); //1960で関数呼び出し trace("1960年は、昭和" + year + "年です"); //ここから下は関数の定義(呼び出されないと実行されない) function yearWorldToShowa(world:Number):Number { var showa:Number = world - 1925; return showa; }
結果、
戻り値がない関数
- 関数の中で計算までおこなうように変更したので、返す「戻り値」がなくなりました
- 戻り値がないときは、戻り値のところに「Void」と書きます
- 返すものがなくなったので、return文はなくなります
- 受け取る戻り値がなくなったので、受取り手である変数「year」もなくなります
yearWorldToShowa( 1975 ); yearWorldToShowa( 1945 ); yearWorldToShowa( 1960 ); //ここから関数の定義 function yearWorldToShowa(world:Number):Void { var showa:Number = world - 1925; trace(world + "年は、昭和" + showa + "年です"); }
戻り値も引数もない関数
- この関数は、引数も受け取らず、何も返しません
- メッセージを表示するだけ
- 引数はないので「()」
- 戻り値はないので、戻りの型は「Void」
printMessage(); function printMessage():Void { trace("ActionScriptは難しい"); }
- あるプログラムから呼ばれて実行し、終了するとそのプログラムの呼び出したところへ戻る
- 引数はいくつでも持つことができる
- 引数は関数内だけで有効なローカル変数である
- 呼び出し元のプログラムへ結果(戻り値)を渡すことができる
ボタンが押されるたびに
var rate:Number = 10; function topMove():Void { lemon_mc._y -= rate; } function rightMove():Void { lemon_mc._x += rate; } function bottomMove():Void { lemon_mc._y += rate; } function leftMove():Void { lemon_mc._x -= rate; } top_btn.onRelease = topMove; right_btn.onRelease = topMove; bottom_btn.onRelease = bottomMove; left_btn.onRelease = leftMove;
ボタンを押し続けると
var rate:Number = 10; function topMove():Void { peach_mc.onEnterFrame = function() { peach_mc._y -= rate; if(peach_mc._y <= -10) { peach_mc._y =310; } } } function rightMove():Void { peach_mc.onEnterFrame = function() { peach_mc._x += rate; if(peach_mc._x >= 510) { peach_mc._x = -10; } } } function bottomMove():Void { peach_mc.onEnterFrame = function() { peach_mc._y += rate; if(peach_mc._y >= 310) { peach_mc._y = -10; } } } function leftMove():Void { peach_mc.onEnterFrame = function() { var rate = 10; peach_mc._x -= rate; if(peach_mc._x <= -10) { peach_mc._x = 510; } } } top_btn.onPress = topMove; bottom_btn.onPress = bottomMove; bottom_btn.onPress = bottomMove; left_btn.onPress = leftMove; function stopMove():Void { peach_mc.onEnterFrame = undefined; } top_btn.onRelease = stopMove; right_btn.onRelease = stopMove; bottom_btn.onRelease = stopMove; left_btn.onRelease = stopMove;