簡體   English   中英

使用Action Script 3.0控制按鈕翻轉

[英]Using Action Script 3.0 to Control Button Rollovers

我正在嘗試將動作腳本2.0代碼轉換為3.0,並且遇到了麻煩。 我有多個正在使用的按鈕,希望每個按鈕在滑過時都轉到某個幀並停在某個幀上,在展開時又回到第1幀。

在編碼方面,我不是很精通,我可以使該代碼適用於一個按鈕,但是當我將其應用於另一個按鈕時,就會出錯,並且實質上是在播放所有幀。

button_201c.addEventListener(MouseEvent.ROLL_OVER, onMouseOver);
button_201c.addEventListener(MouseEvent.ROLL_OUT, onMouseOut);

function onMouseOver(e:MouseEvent):void {
    mouseEnabled = true;
    buttonMode = true;
    gotoAndStop(3);
}

function onMouseOut(e:MouseEvent):void {
    gotoAndStop(1);
}

任何幫助將不勝感激!

一種方法是為通用簡單按鈕創建單個類。 您可以通過將以下類應用於庫中的動畫片段:庫-> your_symbol-> 右鍵單擊 ->屬性-> class 然后,您可以在舞台上拖動該符號的多個實例,它們都將起作用。

如果需要某些按鈕的變化(例如,在懸停時添加聲音),則可以擴展SimpleButton類並重載方法。 通常這會導致許多小類,這就是為什么您應該將它們存儲在按鈕包中的原因 :)

package buttons {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class SimpleButton extends MovieClip {

        public function SimpleButton() {
            addEventListener(MouseEvent.MOUSE_OVER, mOver);
            addEventListener(MouseEvent.MOUSE_OUT, mOut);
            addEventListener(MouseEvent.MOUSE_DOWN, mDown);

            buttonMode = true;
        }
        protected function mOver(e:MouseEvent):void {
            gotoAndStop(2);
        }
        protected function mOut(e:MouseEvent):void {
            gotoAndStop(1);
        }
        protected function mDown(e:MouseEvent):void {}
    }
}

您的代碼中的問題是,當您的代碼位於onMouseOver中時,它丟失了對事件發生按鈕的引用。 要查找觸發事件的按鈕,可以使用e.currentTarget。

而且您不需要mouseEnabled和buttonMode-到它到達那里時,您可以確保已設置按鈕。

所以代碼是

button_201c.addEventListener(MouseEvent.ROLL_OVER, onMouseOver);
button_201c.addEventListener(MouseEvent.ROLL_OUT, onMouseOut);

function onMouseOver(e:MouseEvent):void {
    e.currentTarget.gotoAndStop(3);
}

function onMouseOut(e:MouseEvent):void {
    e.currentTarget.gotoAndStop(1);
}

甚至更短的版本是

button_201c.addEventListener(MouseEvent.ROLL_OVER, function (e:MouseEvent) {    e.currentTarget.gotoAndStop(3);    });
button_201c.addEventListener(MouseEvent.ROLL_OUT, function (e:MouseEvent) {    e.currentTarget.gotoAndStop(1);    });

暫無
暫無

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

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