Flash での関数の使用

このセクションでは、アプリケーションでの関数の使用方法を示します。次のコード例の中には、FLA ファイル内にある ActionScript を使用しているものや、比較のために関数をクラスファイル内に配置しているものがあります。クラスファイル内での関数の使用方法の詳細と使用例については、クラスを参照してください。クラスファイル用の関数の記述方法の詳細については、例 : カスタムクラスの記述を参照してください。

コード作成の作業量や SWF ファイルのサイズを削減するために、コードはできるだけ再利用してください。コードを再利用する基本は、毎回異なるコードを作成するのではなく、同じ関数を何度も呼び出すようにすることです。汎用的なコードを関数にすれば、SWF ファイル内で、同じブロックのコードを複数の多少異なる目的に使用できます。コードを再利用することで、効率のよいアプリケーションを作成できると共に、ActionScript コードの記述量を減らすことができ、結果として開発期間の短縮につながります。

関数は、FLA ファイルやクラスファイルに作成する方法と、コードを中心とするコンポーネントの ActionScript として作成する方法があります。次の例では、タイムライン上およびクラスファイル内での関数の作成方法を示します。

ヒント

 

クラスファイル内またはコードベースのコンポーネント内にコードをパッケージ化すると、コードの共有、配分、または再利用が簡単になります。ユーザーは、コンポーネントをインストールし、ステージにドラッグし、ファイルに保存されたコードを使用できます。たとえば、Flash で利用可能なコードベースコンポーネントのワークフロー ([ウィンドウ]-[サンプルライブラリ]-[クラス]) を使用できます。

次の例では、FLA ファイル内で関数を作成し呼び出す方法を示します。

FLA ファイル内で関数を作成し呼び出すには :

  1. 新しい Flash ドキュメントを作成し、「basicFunction.fla」という名前で保存します。
  2. [ウィンドウ]-[アクション] を選択して、[アクション] パネルを開きます。
  3. スクリプトペインに次の ActionScript コードを入力します。
    function helloWorld() {
        // ここにステートメントを記述
        trace("Hello world!");
    };
    

    この ActionScript では、helloWorld() という (ユーザー定義、名前付き) 関数を定義しています。この時点で SWF ファイルをテストしても、何も起こりません。たとえば、この trace ステートメントによって [出力] パネルへの表示が実行されることはありません。trace ステートメントを表示するには、helloWorld() 関数を呼び出す必要があります。

  4. 関数の後に、次の ActionScript コードを入力します。
    helloWorld();
    

    このコードは helloWorld() 関数を呼び出します。

  5. [制御]-[ムービープレビュー] を選択して FLA ファイルをテストします。

    次のテキストが [出力] パネルに表示されます。Hello world!

値 (パラメータ) を関数に渡す方法については、関数へのパラメータの受け渡しを参照してください。

メインタイムライン上で関数を記述するには複数の方法があります。最も重要なのは、名前付き関数と匿名関数の両方を使用できることです。たとえば、関数を作成する際には次のシンタックスを使用できます。

function myCircle(radius:Number):Number {
    return (Math.PI * radius * radius);
}
trace(myCircle(5));

多くの場合、匿名関数の方が読みにくくなります。次のコードと前のコードを比較してください。

var myCircle:Function = function(radius:Number):Number {
    // ここに関数ブロックを記述
    return (Math.PI * radius * radius);
};
trace(myCircle(5));

ActionScript 2.0 を使用する場合、次の例に示すように、クラスファイル内に関数を配置することもできます。

class Circle {
    public function area(radius:Number):Number {
        return (Math.PI * Math.pow(radius, 2));
    }
    public function perimeter(radius:Number):Number {
        return (2 * Math.PI * radius);
    }
    public function diameter(radius:Number):Number {
        return (radius * 2);
    }
}

クラスファイル内に関数を記述する方法の詳細については、クラスを参照してください。

上記のコードサンプルからわかるとおり、関数はタイムライン上に配置する必要はありません。次の例でも、関数をクラスファイル内に配置しています。ActionScript 2.0 を使用して大規模なアプリケーションを作成する場合は、複数のアプリケーションで簡単にコードを再利用できるこの方法を採用することをお勧めします。関数を他のアプリケーションで再利用する場合には、コードを最初から書き直す代わりに既存のクラスを読み込むか、新しいアプリケーション内に関数を複写することができます。

クラスファイル内に関数を作成するには :

  1. 新しい ActionScript ドキュメントを作成し、「Utils.as」という名前で保存します。
  2. スクリプトペインに次の ActionScript を入力します。
    class Utils {
      public static function randomRange(min:Number, max:Number):Number {
        if (min > max) {
          var temp:Number = min;
          min = max;
          max = temp;
        }
        return (Math.floor(Math.random() * (max - min + 1)) + min);
      }
      public static function arrayMin(num_array:Array):Number {
        if (num_array.length == 0) {
          return Number.NaN;
        }
        num_array.sort(Array.NUMERIC | Array.DESCENDING);
        var min:Number = Number(num_array.pop());
        return min;
      }
      public static function arrayMax(num_array:Array):Number {
        if (num_array.length == 0) {
          return undefined;
        }
        num_array.sort(Array.NUMERIC);
        var max:Number = Number(num_array.pop());
        return max;
      }
    }
    
  3. [ファイル]-[保存] を選択し、ActionScript ファイルを保存します。
  4. 新しい Flash ドキュメントを作成し、"Utils.as" と同じディレクトリに、「classFunctions.fla」として保存します。
  5. [ウィンドウ]-[アクション] を選択して、[アクション] パネルを開きます。
  6. スクリプトペインに次の ActionScript を入力します。
    var randomMonth:Number = Utils.randomRange(0, 11);
    var min:Number = Utils.arrayMin([3, 3, 5, 34, 2, 1, 1, -3]);
    var max:Number = Utils.arrayMax([3, 3, 5, 34, 2, 1, 1, -3]);
    trace("month: " + randomMonth);
    trace("min: " + min); // -3
    trace("max: " + max); // 34
    
  7. [制御]-[ムービープレビュー] を選択してドキュメントをテストします。次のテキストが [出力] パネルに表示されます。
    month: 7
    min: -3
    max: 34
    

    メモ

     

    スクリプトアシストを使用してコードを記述する方法については、『Flash ユーザーガイド』を参照してください。


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000757.html