外部クラス間で通信する方法と、クラスと ect を適切にスコープする方法を概説する優れたチュートリアルを探していますが、記事を見つけるのに苦労しています。これらの概念をよりよく理解するために私が取ることができるチュートリアルに関するアドバイスはありますか?
2 に答える
一般的なオブジェクト指向プログラミングのチュートリアルを探しているようですね。 http://active.tutsplus.com/tutorials/actionscript/as3-101-oop-introduction-basix/
概要として - ほとんどのオブジェクト指向言語で異なるクラスと通信するには、次のいずれかを実行できます。
そのクラスから継承します。(AS3 で「extends」キーワードを使用)
class Square {
    var x, y, width, height;
}
class Rectangle extends Square{
    function changeDimensions( newWidth, newHeight ):void {
        super.width = newWidth;
        super.height = newHeight;
    }
}
そのクラスのインスタンスをクラスのプロパティとして保持します ( http://en.wikipedia.org/wiki/Has-aを参照)。
class Tire {
    var radius, tred;
}
class Car {
    var width, depth;
    var make;
    var leftBackTire:Tire;
    var rightBackTire:Tire;
    var leftFrontTire:Tire;
    var rightFrontTire:Tire;
}
外部クラスのインスタンスを関数パラメーターとしてクラスの関数に渡します。
class Person {
    var position;
}
class Treadmill {
    function movePerson( personToMove:Person ):void {
        personToMove.x += 5;
    }
}
外部クラス (クラスのスコープ外) のグローバル インスタンスを作成し、どこからでもアクセスします。
class World {
    var inhabitance;
}
var earth:World = new World();
class InhabitanceCalculator {
    function calcuateEarthInhabitance():void {
        earth.inhabitance = 3000000000;
    }
}
(特にAS3)クラスが特定のイベントに対して呼び出される関数を登録する事前定義されたイベントシステムを使用し、外部クラスがリッスンする人に送信します。
class Scoreboard extends EventDispatcher {
     var points = 0;
     Scoreboard(player:Player) {
         player.addEventListener("PlayerKilledEnemy", onPlayerKilledEnemy);
     }
     function onPlayerKilledEnemy():void {
         points += 1;
     }
}
class Player extends EventDispatcher {
    function killEnemy():void {
        //Aaaah!
        dispatchEvent( new Event("PlayerKilledEnemy") );
    }
}
変数/クラス/関数に「public」キーワードを追加していないことに注意してください。外部クラスにアクセスさせたいものには、それを先頭に追加する必要があります。
また、カスタムイベントを見るのにも少し時間を費やします。適切に使用すると、AS3のクラス間に非常に用途の広いパイプラインを提供できます。