簡體   English   中英

Flash CS5 + AS3時間線導航

[英]Flash CS5 + AS3 Timeline Navigation

CS5和AS3的新手,所以如果我犯了一個根本性的錯誤,請立即糾正我。

我正在嘗試構建一個相當冗長而復雜的表格。 因此,這將需要瀏覽其中的不同部分。 我是Flash和AS3的新手,所以我開始做一些原型制作,並有兩個按鈕可以在時間軸上前后導航。 現在的問題是,當我試圖將其從“代碼片段”(正確的術語?)區域帶入我的主ActionScript文件時。 出現按鈕,但按它們不會執行MouseEvent。

有兩個問題。 1. Am I doing this right? 2. Why doesn't MouseEvent work when the code is in the .as file?

Form.fla-框架1代碼段

var form:Form = new Form();
addChild(form);

形式

package  
{
    import flash.display.MovieClip;
    import fl.controls.Button;
    import flash.events.MouseEvent;

    public class Form extends MovieClip 
    {
        private var nextButton:Button;
        private var prevButton:Button;

        public function Form() 
        {
            setupNavigation();
        }

        private function setupNavigation():void
        {
            nextButton = new Button();
            nextButton.label = "Next";
            // ... size and position code
            nextButton.addEventListener(MouseEvent.CLICK, moveForward);

            prevButton = new Button();
            prevButton.label = "Previous";
            // ... size and position code
            prevButton.addEventListener(MouseEvent.CLICK, moveBackward);

            addChild(nextButton);
            addChild(prevButton);
        }

        // Setup Mouse events
        private function moveForward(event:MouseEvent):void
        {
            nextFrame();
        }

        private function moveBackward(event:MouseEvent):void
        {
            prevFrame();
        }
    }
}

您必須使用setter函數將對主時間軸的引用傳遞給Form類

var form:Form = new Form();
form.mainTimeline = this;
addChild(form);

在您的Form類(不是摘錄,類是正確的術語)中,添加以下函數和變量:

private var _mainTimeline:Object;

public function set mainTimeline(mtl:Object):void
{
    _mainTimeline = mtl;
}

然后在前進/后退功能中將prevFrame()和nextFrame()更改為:

_mainTimeline.prevFrame();
_mainTimeline.nextFrame();

有幾種方法可以實現您要實現的目標,這就是更改部分的方法。 您的方式是做到這一點的一種方式。 也許有一些更好的方法,但是您在這里的方法沒有任何明顯的錯誤。 :)

更好,更干凈的方法是使用Document類。 通過使Form類充當時間軸本身,Document Class將不需要將時間軸引用傳遞給Form類。

這是您的操作方式。 在fla文件中,取消選擇已選擇的任何對象,然后查看屬性工具欄。 在“發布”標題下,您將看到一個可編輯的文本字段,其旁邊寫有“類:”。 輸入與fla相關的類的相對路徑,在這種情況下,這只是類名,因為您沒有定義包。 因此,只需在其中鍵入“表單”即可。 文檔類始終必須擴展DisplayObjectContainer,其中包括MovieClip和Sprite,因此您已經編寫的Form類應該可以正常工作。

完成后,您可以像在問題中一樣調用nextFrame()和prevFrame(),它應該可以正常工作。

暫無
暫無

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

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