闪回时间轴
Flash reverse timeline
使用 flash cs6 和 as3。
我想制作这样的菜单link。当菜单上mouse_over
时,蓝色矩形向右移动;当mouse_up
时,动画反转。
我在影片剪辑中制作了蓝色矩形 menuBlueHome
。在那里,我让矩形从左向右移动(从第 1 帧到第 10 帧)。在第 10 帧,我制作了动作脚本:
stop();
当我遇到这个问题时,我还在使用主菜单。当我将鼠标悬停在主菜单上时,蓝色矩形向右移动并在 mouse_up
之前直接反转。这是mc之外的代码:
var menuBlueHome: MovieClip;
menuBlueHome.stop();
var direct: String;
btnHome.addEventListener(MouseEvent.MOUSE_OVER,onOverHome);
btnHome.addEventListener(MouseEvent.MOUSE_OUT,onLeaveHome);
btnHome.addEventListener(MouseEvent.CLICK,onClickHome);
function onOverHome(e:MouseEvent):void{
androidHome.visible = true;
menuBlueHome.play();
}
function onLeaveHome(e:MouseEvent):void{
androidHome.visible = false;
addEventListener(Event.ENTER_FRAME,onFrameHome);
}
function onClickHome(e:MouseEvent):void{
gotoAndStop(1);
}
function onFrameHome(event:Event):void {
if(menuBlueHome.currentFrame > 9) {
direct = "backward";
}
var backAmount:Number = menuBlueHome.currentFrame -1;
if(direct == "backward") {
menuBlueHome.gotoAndStop(backAmount);
}
}
我是不是代码有问题?感谢您的帮助。
尝试使用此代码:
function onLeaveHome(e:MouseEvent):void{
androidHome.visible = false;
menuBlueHome.removeEventListener(Event.ENTER_FRAME, onFrameHome);
menuBlueHome.addEventListener(Event.ENTER_FRAME, onFrameHome);
}
function onFrameHome(event:Event):void {
var backAmount:Number = menuBlueHome.currentFrame - 1;
menuBlueHome.gotoAndStop(backAmount);
if(backAmount == 1) menuBlueHome.removeEventListener(Event.ENTER_FRAME, onFrameHome);
}
Here 你有一个例子。
但是,我建议您使代码更加动态,这里有 another example。
使用 flash cs6 和 as3。
我想制作这样的菜单link。当菜单上mouse_over
时,蓝色矩形向右移动;当mouse_up
时,动画反转。
我在影片剪辑中制作了蓝色矩形 menuBlueHome
。在那里,我让矩形从左向右移动(从第 1 帧到第 10 帧)。在第 10 帧,我制作了动作脚本:
stop();
当我遇到这个问题时,我还在使用主菜单。当我将鼠标悬停在主菜单上时,蓝色矩形向右移动并在 mouse_up
之前直接反转。这是mc之外的代码:
var menuBlueHome: MovieClip;
menuBlueHome.stop();
var direct: String;
btnHome.addEventListener(MouseEvent.MOUSE_OVER,onOverHome);
btnHome.addEventListener(MouseEvent.MOUSE_OUT,onLeaveHome);
btnHome.addEventListener(MouseEvent.CLICK,onClickHome);
function onOverHome(e:MouseEvent):void{
androidHome.visible = true;
menuBlueHome.play();
}
function onLeaveHome(e:MouseEvent):void{
androidHome.visible = false;
addEventListener(Event.ENTER_FRAME,onFrameHome);
}
function onClickHome(e:MouseEvent):void{
gotoAndStop(1);
}
function onFrameHome(event:Event):void {
if(menuBlueHome.currentFrame > 9) {
direct = "backward";
}
var backAmount:Number = menuBlueHome.currentFrame -1;
if(direct == "backward") {
menuBlueHome.gotoAndStop(backAmount);
}
}
我是不是代码有问题?感谢您的帮助。
尝试使用此代码:
function onLeaveHome(e:MouseEvent):void{
androidHome.visible = false;
menuBlueHome.removeEventListener(Event.ENTER_FRAME, onFrameHome);
menuBlueHome.addEventListener(Event.ENTER_FRAME, onFrameHome);
}
function onFrameHome(event:Event):void {
var backAmount:Number = menuBlueHome.currentFrame - 1;
menuBlueHome.gotoAndStop(backAmount);
if(backAmount == 1) menuBlueHome.removeEventListener(Event.ENTER_FRAME, onFrameHome);
}
Here 你有一个例子。
但是,我建议您使代码更加动态,这里有 another example。