flash as3.0 返回上一帧的按钮问题!
我的代码是这样写的:其中A和B是定义的int变量,B_FH是返回按钮的名字varA:int=1;varB:int=1;B_FH.addEventListener(Mous...
我的代码是这样写的:其中A和B是定义的int变量,B_FH是返回按钮的名字
var A:int = 1;
var B:int = 1;
B_FH.addEventListener(MouseEvent.CLICK, FH);
addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);
function fl_EnterFrameHandler(event:Event):void
{
B = A;
A = this.currentFrame;
}
function FH(event:MouseEvent):void
{
gotoAndStop(B);
}
求大神指教为何不行! 展开
var A:int = 1;
var B:int = 1;
B_FH.addEventListener(MouseEvent.CLICK, FH);
addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);
function fl_EnterFrameHandler(event:Event):void
{
B = A;
A = this.currentFrame;
}
function FH(event:MouseEvent):void
{
gotoAndStop(B);
}
求大神指教为何不行! 展开
4个回答
展开全部
应该这么说,你这段代码只能在 时间轴还在向前运行的时候按下按钮 实现 返回当前帧的上一帧并停止.
其实你的思路是建立在一个错误的认识上:你可能认为EnterFrame事件与时间轴同步.其实不然.
事实上,"载入帧"是flash系统内部的一个很核心的操作.而时间轴只是"控制动画".这么说吧,"帧
就类似flash世界的一种时间单位,它是怎么都停不下来的,flash每隔一段时间就会把"帧"推行"一格".但是时间轴只是帧的一个表现.播放状态的时间轴的确是和"帧"同步,然而当你用stop将某个时间轴停止之后,flash世界的"帧"却还在流逝中,这个时候帧和时间轴就不同步了.
回头看你的代码,你用enterframe事件来记录当前帧和上一帧,在同步的情况下,这是正确的.当你第一次把时间轴停止了之后,enterframe却还在运行.一般帧都流逝的很快的,一秒至少几十帧.停止时间轴后一瞬间enterframe就触发了好几次.这个时候,A,B就等值了,都等于当前帧.(A,B只有一步延迟而已)
其实控制时间轴远没有那么麻烦,flash自带丰富的时间轴控制函数,对于你的情况,可以使用prevFrame.
其实你的思路是建立在一个错误的认识上:你可能认为EnterFrame事件与时间轴同步.其实不然.
事实上,"载入帧"是flash系统内部的一个很核心的操作.而时间轴只是"控制动画".这么说吧,"帧
就类似flash世界的一种时间单位,它是怎么都停不下来的,flash每隔一段时间就会把"帧"推行"一格".但是时间轴只是帧的一个表现.播放状态的时间轴的确是和"帧"同步,然而当你用stop将某个时间轴停止之后,flash世界的"帧"却还在流逝中,这个时候帧和时间轴就不同步了.
回头看你的代码,你用enterframe事件来记录当前帧和上一帧,在同步的情况下,这是正确的.当你第一次把时间轴停止了之后,enterframe却还在运行.一般帧都流逝的很快的,一秒至少几十帧.停止时间轴后一瞬间enterframe就触发了好几次.这个时候,A,B就等值了,都等于当前帧.(A,B只有一步延迟而已)
其实控制时间轴远没有那么麻烦,flash自带丰富的时间轴控制函数,对于你的情况,可以使用prevFrame.
展开全部
B_FH.addEventListener(MouseEvent.CLICK, FH);
function FH(event:MouseEvent):void
{
if(this.currentFrame > 1)
{
gotoAndStop(this.currentFrame -1);
}
else
{
//随便
}
}
其他语句不用!
function FH(event:MouseEvent):void
{
if(this.currentFrame > 1)
{
gotoAndStop(this.currentFrame -1);
}
else
{
//随便
}
}
其他语句不用!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单击函数改成下面这样即可吧!
function FH(event:MouseEvent):void
{
this.prevFrame();
}
function FH(event:MouseEvent):void
{
this.prevFrame();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先你这个按钮要放到舞台上,给这个按钮加一个实例名如:btn_return
然后在主时间轴,有这个按钮的帧上写如下代码:
btn_return.addeventlistener(mouseevent.mouse_down,replayevent);
function
replayevent(e:mouseevent):void
{
gotoandplay(1);
}
然后在主时间轴,有这个按钮的帧上写如下代码:
btn_return.addeventlistener(mouseevent.mouse_down,replayevent);
function
replayevent(e:mouseevent):void
{
gotoandplay(1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询