[英]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.