簡體   English   中英

如何使用按鈕控制動畫片段?

[英]How do I control a movieclip using a button?

Actionscript新手。 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文件時,它只是保持循環而不是暫停按鈕單擊。

任何幫助都將非常感激。

類由屬性和函數組成:通常是構造函數,它在實例化類時運行(文檔類在應用程序運行時立即運行),然后是以不同方式調用的其他函數。

你所做的就是你把所有的功能放在了構造函數中:不好。 這是一個功能,你只是不這樣做(雖然從技術上講,你可以做匿名功能,但這是一個不同的故事)。

此外,應在構造函數中添加事件偵聽器。 添加事件監聽器是調用一個函數,並且(據我所知)你不能從其他函數之外的類調用函數。

基本上,你應該從構造函數中取出你的函數,如下所示:

package{

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

    public class button extends MovieClip{

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

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

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

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

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

另一件事是文件名應該與類名相同。 也就是說,您的文檔類應該被稱為button.as而不是site1.as 我不完全確定它是否在Flash IDE中是100%必需的(自從我使用它以來已經有一段時間了),因為它沒有給出錯誤,但即使它不是它的好習慣。

研究類如何工作以及具體記錄類是一個好主意。 這是關於類的kirupa教程這里是關於文檔類的ActiveTuts +教程

使用相同的名稱命名您的類和文件。 我建議使用以下代碼。

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訪問者。

編輯。

'button'不是一個非常好的類名,但它會起作用。

1)命名你的文件,類和構造函數:'button':

public class button extends MovieClip

public function button()

2)確保您的聯系良好! 含義:如果您想使用此類控制整個電影,請更改文檔“類”名稱以獲取button ,如果您只想從庫中控制MovieClip,請將其拖到舞台上,選中“導出動作腳本”,並更改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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM