Actionscript 3 使用动作脚本3.0控制按钮翻转

Actionscript 3 使用动作脚本3.0控制按钮翻转,actionscript-3,Actionscript 3,我正在尝试将动作脚本2.0代码转换为3.0,但遇到了问题。我有多个正在使用的按钮,希望每个按钮在翻滚时转到某个帧并在该帧处停止,在翻滚时返回到第1帧 我对编码不是很在行,我可以让这个代码在一个按钮上运行,但是当我把它应用到另一个按钮上时,我会出错,它基本上是在播放所有的帧 button_201c.addEventListener(MouseEvent.ROLL_OVER, onMouseOver); button_201c.addEventListener(MouseEvent.ROLL_OUT

我正在尝试将动作脚本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);
}

任何帮助都将不胜感激

一种方法是为通用简单按钮创建单个类。您可以通过以下操作将该类应用于库中的movieclip:库->您的\u符号->右键单击->属性->class。然后,您可以在舞台上拖动此符号的任意多个实例,它们都将正常工作

如果需要更改某些按钮(例如,在悬停时添加声音),可以扩展SimpleButton类并重载这些方法。这通常会产生许多小类,这就是为什么您应该将它们存储在按钮包中的原因。:)


代码中的问题是,当代码在onMouseOver中时,它丢失了对事件发生所在按钮的引用。 要查找获取事件的按钮,可以使用e.currentTarget

而且你不需要鼠标启动和按钮模式——当它到达那里时,你可以确定你的按钮已经设置好了

所以代码应该是

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);    });
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);    });