関数の使用について

コードは、できるだけ再利用してください。コードを再利用する基本は、毎回異なるコードを作成せずに、同じ関数を何度も呼び出すことです。汎用的なコードを関数にすれば、SWF ファイル内で、同じブロックのコードを複数の多少異なる目的に使用できます。コードを再利用することで、効率のよいアプリケーションを作成できると共に、ActionScript コードの記述量を減らすことができ、結果として開発期間の短縮につながります。関数は、タイムライン上およびクラスファイル内に作成する方法と、コードを中心とするコンポーネントの ActionScript として作成する方法があります。これらの関数はさまざまな方法で再利用できます。

ActionScript 2.0 を使用している場合は、タイムライン上に関数を記述することは避けてください。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);
}
}

関数を作成するときは、次のシンタックスを使用します。

function myCircle(radius:Number):Number { 
    //... 
} 

次のシンタックスは、読みにくいので使用しないでください。

myCircle = function(radius:Number):Number { 
    //...
}

次の例では、関数をクラスファイル内に配置しています。ActionScript 2.0 を選択する場合、こうすることでコードの再利用性を最大化できるので、この方法がベストプラクティスだといえます。関数を他のアプリケーションで再利用する場合には、コードを最初から書き直す代わりに既存のクラスを読み込むか、新しいアプリケーション内に関数を複写することができます。

class mx.site.Utils {
    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);
    }
    static function arrayMin(numArr:Array):Number {
        if (numArr.length == 0) {
            return Number.NaN;
        }
        numArr.sort(Array.NUMERIC | Array.DESCENDING);
        var min:Number = Number(numArr.pop());
        return min;
    }
    static function arrayMax(numArr:Array):Number {
        if (numArr.length == 0) {
            return undefined;
        }
        numArr.sort(Array.NUMERIC);
        var max:Number = Number(numArr.pop());
        return max;
    }
}

これらの関数を使用するには、たとえば、次のような ActionScript を FLA ファイルに追加します。

import mx.site.Utils;
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);
trace("max: "+max);

 

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

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