速習Webデザイン ActionScript3.0を読む その3

速習Webデザイン ActionScript 3.0

速習Webデザイン ActionScript 3.0

part4 関数

  • 01-01
    • いままでもイベントハンドラとして普通に関数が出てきてたけどここであらためて解説。
    • イベントハンドラ名の後の「()」にイベントオブジェクトを受け取る変数が必要。このテキストのサンプルでは全て「evt」だった。
  • 02-01
    • このテキストではユーザー定義関数名は「x」から始まっている。
    • 関数の定義と実行は異なるフレームに記述されても問題なし。
  • 02-03
    • 戻り値を返す関数の定義では戻り値のデータ型も指定する。

function 関数名():データ型 {
  処理の記述

  return 戻り値;
 }

    • 戻り値がない場合は「void」型となる。
  • Let's TRY!!
    • テキストフィールドに入力された数値を用意された関数「xAdd」を使って計算し表示させる、という課題。
    • 型の変換がよく分からぬまま以下のようにやってみた。

function xAdd(num1:Number, num2:Number):Number {
  return num1 + num2;
}

add1_btn.addEventListener(MouseEvent.CLICK,xad01);
function xad01(evt):void{
  ans1_txt:text =String(xAdd(in1_txt,in2_txt));←ここでエラーが出てる
}

以下のようにコンパイルエラー。

1120: 未定義のプロパティ text へのアクセスです。
1067: 型 flash.text:TextField の値が、関連しない型 Number に暗黙で型変換されています。

    • まず単純ミスの「ans1_txt:text」を「ans1_txt.text」に直し、「in1_txt」も「in1_txt.text」とそれぞれ直すと動いた。
    • 動いたけど、計算結果が「NaN(Not a Number)」に。
    • そんなわけで「in1_txt.text」も型変換して「Number(in1_txt.text)」とそれぞれ直すとばっちり☆
    • 全体のスクリプトは以下のように記述。

function xAdd(num1:Number, num2:Number):Number {
  return num1 + num2;
 }

add1_btn.addEventListener(MouseEvent.CLICK,xad01);
  function xad01(evt):void{
    ans1_txt.text =String(xAdd(Number(in1_txt.text),Number(in2_txt.text)));
  }

add2_btn.addEventListener(MouseEvent.CLICK,xad02);
  function xad02(evt):void{
    ans2_txt.text =String(xAdd(xAdd(Number(in3_txt.text),Number(in4_txt.text)),Number(in5_txt.text)));
  }

    • 最後の長い行でカッコの閉じミスがあったけど直したらきちんと動いた。
    • 模範解答みたら変数に代入して読みやすくまとまっていた。なるほど!!!(´Д⊂

  var inputNum1:Number = Number(in1_txt.text);
  var inputNum2:Number = Number(in2_txt.text);
  var answerNum:Number = xAdd(inputNum1, inputNum2);

    • とにかく型変換が難しいね。