0

アクションスクリプト初心者。Actionscript 3.0 http://republicofcode.com/tutorials/flash/basicwebsite/のチュートリアルに従って開始し ます。コードが Flash ファイルに残っている限り、すべて正常に動作します。問題があるのは、それを外部ファイルに移動するときです。

アクションレイヤーのキーフレームに次のコードがあります。

    stop();

function goHome (e:MouseEvent):void{
gotoAndStop("Home");
}
home_btn.addEventListener(MouseEvent.CLICK, goHome);

function goAbout (e:MouseEvent):void{
gotoAndStop("About");
}
about_btn.addEventListener(MouseEvent.CLICK, goAbout);

function goLinks (e:MouseEvent):void{
gotoAndStop("Links");
}
links_btn.addEventListener(MouseEvent.CLICK, goLinks);

function goContact (e:MouseEvent):void{
gotoAndStop("Contact");
}
contact_btn.addEventListener(MouseEvent.CLICK, goContact);

すべて正常に動作しますが、コードを外部 as3 ファイルに移動したいのですが、問題が発生しています。

Document クラス「site1」を追加しました。これが外部ファイルの名前です。Flash ファイルのキーフレームからコードを削除し、外部ファイルに移動しました。

私のsite1.asに表示されるコードは次のとおりです

    package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;

public class button extends MovieClip{

    public function button() {
        function goHome (e:MouseEvent):void{
gotoAndStop("Home");
}
home_btn.addEventListener(MouseEvent.CLICK, goHome);

function goAbout (e:MouseEvent):void{
gotoAndStop("About");
}
about_btn.addEventListener(MouseEvent.CLICK, goAbout);

function goLinks (e:MouseEvent):void{
gotoAndStop("Links");
}
links_btn.addEventListener(MouseEvent.CLICK, goLinks);

function goContact (e:MouseEvent):void{
gotoAndStop("Contact");
}
contact_btn.addEventListener(MouseEvent.CLICK, goContact);
    }
}
}

問題は、Flash ファイルをパブリッシュすると、ループし続け、ボタンをクリックしても一時停止しないことです。

どんな助けでも大歓迎です。

4

2 に答える 2

1

クラスとファイルに同じ名前を付けます。次のコードを提案します。

package
{
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.text.TextField;

    public class YourClassName extends MovieClip
    {
        public function YourClassName() {
            home_btn.addEventListener(MouseEvent.CLICK, goHome);
            about_btn.addEventListener(MouseEvent.CLICK, goAbout);
            links_btn.addEventListener(MouseEvent.CLICK, goLinks);
            contact_btn.addEventListener(MouseEvent.CLICK, goContact);          
        }

        private function goHome(e:MouseEvent):void {
            gotoAndStop("Home");
        }       

        private function goAbout(e:MouseEvent):void {
            gotoAndStop("About");
        }

        private function goLinks(e:MouseEvent):void {
            gotoAndStop("Links");
        }

        private function goContact(e:MouseEvent):void {
            gotoAndStop("Contact");
        }

    }
}

AS3 は AS2 よりも明示的です。private/publicアクセサーを使用することをお勧めします。

編集。

「ボタン」は本当に良いクラス名ではありませんが、機能します。

1) ファイル、クラス、コンストラクターに名前を付けます: 'button':

public class button extends MovieClip

public function button()

2) リンケージが良好であることを確認してください。意味 : このクラスでムービー全体を制御する場合は、ドキュメントの「クラス」名を に変更しbuttonます。ライブラリからムービークリップのみを制御する場合は、ステージにドラッグし、[アクション スクリプトのエクスポート] をオンにして、の「クラス」値を変更しますbutton

この方法では、インスタンス名は必要ないと考えてください。この場合、クラスリンケージで十分です。

参照 :

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Class.html

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b8ea63-7fee.html

于 2013-04-18T14:34:29.743 に答える