AS 3.0  実例はAS 3のパケットを熟知しており、複数のパケット間の相互通信を学ぶ。


AS 3のpackageと複数のpackageとの間の通信説明を熟知しています。一つは簡単なdemoで、四つのボタンがあります。マウスをなぞった時と移動した時は違った状態になります。クリックしてdisabledになり、他のボタンをクリックした時、以前disabledのボタンが回復し、クリックされたボタンが無効になります。プレゼンテーション:http://www.live-my-life-with-yuyi.com/as3_cases/communicating/準備作業:ソースファイルcommunicatingを開く。final.flaは、プロパティのリリース設定をクリックして、アクションスクリプト3の隣の設定をクリックして、一番下のクラスパスの中で、clasesのフォルダのパスを導入して、クリックして確定します。コード:ソースファイルのコードは簡単です。

import todd.interactive.ButtonSet; 
var buttons:ButtonSet = new ButtonSet(); 
buttons.addButtons([one_mc,two_mc,three_mc,four_mc]); 
addChild(buttons); 
はButtonSet類を導入して、実用化して、中の一つの方法を呼び出して、最後にそれを舞台に置いてください。classisフォルダの下のtodd->interactiveフォルダには二つのasファイルがあります。その一つは先ほど呼び出したButonSetです。Buttone Setのソースを見に来ました。

package todd.interactive 

    // display events ,  
    import flash.display.*; 
    import flash.events.*; 
    import flash.filters.*; 
    import flash.net.*; 
    import flash.geom.*; 
    import flash.ui.*; 
    import flash.utils.*; 
    import fl.transitions.*; 
    import fl.transitions.easing.*; 

    public class ButtonSet extends MovieClip 
    { 
        public var buttons:Array; 

        public function ButtonSet() 
        { 

        } 

        public function addButtons(buttonSet:Array):void 
        { 
            buttons = buttonSet; 
            for(var i:int = 0; i < buttons.length; i++) 
            { 
                addChild(buttons[i]); 
            } 
        } 
    } 

種類は一つのpackageの中に入れられます。お金が財布に入れられるように。packageの後に定義されるのは、このクラスのパスです。それから一連の常用する種類。グローバル変数を設定します。変数の前にpublicを追加すればいいです。このようにして、クラス全体でアクセスできます。クラス名はファイル名と同じ(大文字と小文字を区別して)、同じ名前の関数を定義します。この関数はクラスが初期化された時に呼び出します。ここは棚を作っただけで、具体的な内容はありません。そして関数addButotonsを定義しました。その役割はいくつかのmcまたはspritesを自分のcontainerに置くことです。もう一つの種類があります。Diabling Buttonもtodd-interactiveフォルダの下にあります。これもこのケースの核心です。そうです。以前はもうRectButtonのlinkageのbaseClassをtodd.interactive.Dispabling Buttonに設定しました。コードは少し長いです。そして、詳しく聞いてください。


package todd.interactive{ 
    import flash.display.*; 
    import flash.events.*; 
    import todd.interactive.ButtonSet; 
    public class DisablingButton extends MovieClip { 
        var labels:Array; 
        var thisParent:*; 
        var thisIndex:int; 
        public function DisablingButton() { 
            labels = this.currentLabels; 
            this.addEventListener(MouseEvent.CLICK, disableButton); 
            this.addEventListener(MouseEvent.ROLL_OVER, over); 
            this.addEventListener(MouseEvent.ROLL_OUT, out); 
            this.addEventListener(Event.ADDED,setParent); 
        } 
        function disableButton(event:MouseEvent):void { 
            for (var i:int = 0; i < labels.length; i++) { 
                if (labels[i].name == "disable") { 
                    this.gotoAndPlay("disable"); 
                } 
            } 
            this.removeEventListener(MouseEvent.CLICK, disableButton); 
            this.removeEventListener(MouseEvent.ROLL_OVER, over); 
            this.removeEventListener(MouseEvent.ROLL_OUT, out); 
            enableOthers(); 
        } 
        function enableButton():void { 
            this.addEventListener(MouseEvent.CLICK, disableButton); 
            this.addEventListener(MouseEvent.ROLL_OVER, over); 
            this.addEventListener(MouseEvent.ROLL_OUT, out); 
            this.gotoAndStop(1); 
        } 
        function over(event:MouseEvent):void { 
            for (var j:int = 0; j < labels.length; j++) { 
                if (labels[j].name == "over") { 
                    this.gotoAndPlay("over"); 
                } 
            } 
        } 
        function out(event:MouseEvent):void { 
            for (var k:int = 0; k < labels.length; k++) { 
                if (labels[k].name == "out") { 
                    this.gotoAndPlay("out"); 
                } 
            } 
        } 
        function setParent(event:Event):void { 
            if (this.parent is ButtonSet) { 
                thisParent=this.parent; 
                for (var w:int=0; w < thisParent.buttons.length; w++) { 
                    if (this == thisParent.buttons[w]) { 
                        thisIndex=w; 
                    } 
                } 
            } 
        } 
        function enableOthers():void { 
            for (var z:int=0; z < thisParent.buttons.length; z++) { 
                if (z != thisIndex) { 
                    thisParent.buttons[z].enableButton(); 
                } 
            } 
        } 
    } 

に常用類を二つ載せてから、定義されたばかりのButonSet類を載せました。そうすると、Buttone Setのいくつかの方法が使えます。注意:このクラスはMovieclip類を引き継がなければなりません。対象はmcです。その後、いくつかのグローバル変数(デフォルトはすべてpublic)を定義します。構文関数Diabling Buttonを作成し、labels = this.current Labels; 現在のmcのlabel属性を取得し、arrayとして返し、label.frame、label.nameなどの属性を含むという意味です。自分のマウスをモニターしてクリックし、移動し、イベントを移動します。this.addEvent Listener(Event.ADDED,set Part);この文の意味は、自分がコンテナに追加された時にsetPart関数を呼び出すということです。disableButtonという関数は、現在のmcの状態をdisabledに変えて、他のボタンを同時にアクティブにしながらイベントの傍受をキャンセルすることです。enableButton関数は、自分の待ち受けイベントをアクティブにし、自分の状態を初期化する役割を果たします。overとout関数は簡単で、自分の現在の状態を設定します。setPart関数の最終目的は、キャプチャクリックイベントがどのmc上で発生するか(gotoAndPlay方法は、EVENT.ADDEDをトリガするので、overとout関数は、setPart関数をトリガします。これも改善すべきところです。)enabeleOthers関数は名前の通り、他のボタンをアクティブにします。setPartentはすでに覚えていますので、最後のクリックイベントはどのmcで発生しますか?判例分析が完了しました。ファイルを包む