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);
}
求大神指教为何不行!
展开
 我来答
Many_question
2013-03-22 · TA获得超过2853个赞
知道大有可为答主
回答量:2040
采纳率:66%
帮助的人:2311万
展开全部
应该这么说,你这段代码只能在 时间轴还在向前运行的时候按下按钮 实现 返回当前帧的上一帧并停止.
其实你的思路是建立在一个错误的认识上:你可能认为EnterFrame事件与时间轴同步.其实不然.
事实上,"载入帧"是flash系统内部的一个很核心的操作.而时间轴只是"控制动画".这么说吧,"帧
就类似flash世界的一种时间单位,它是怎么都停不下来的,flash每隔一段时间就会把"帧"推行"一格".但是时间轴只是帧的一个表现.播放状态的时间轴的确是和"帧"同步,然而当你用stop将某个时间轴停止之后,flash世界的"帧"却还在流逝中,这个时候帧和时间轴就不同步了.

回头看你的代码,你用enterframe事件来记录当前帧和上一帧,在同步的情况下,这是正确的.当你第一次把时间轴停止了之后,enterframe却还在运行.一般帧都流逝的很快的,一秒至少几十帧.停止时间轴后一瞬间enterframe就触发了好几次.这个时候,A,B就等值了,都等于当前帧.(A,B只有一步延迟而已)

其实控制时间轴远没有那么麻烦,flash自带丰富的时间轴控制函数,对于你的情况,可以使用prevFrame.
game775110132
2013-03-22 · 超过18用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:35万
展开全部
B_FH.addEventListener(MouseEvent.CLICK, FH);

function FH(event:MouseEvent):void
{
if(this.currentFrame > 1)
{
gotoAndStop(this.currentFrame -1);
}
else
{
//随便
}
}

其他语句不用!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
局势君
2013-03-22 · 知道合伙人教育行家
局势君
知道合伙人教育行家
采纳数:409 获赞数:466

向TA提问 私信TA
展开全部
单击函数改成下面这样即可吧!

function FH(event:MouseEvent):void
{
this.prevFrame();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
靖富贵陶锦
2019-04-01 · TA获得超过3.7万个赞
知道小有建树答主
回答量:1.2万
采纳率:28%
帮助的人:839万
展开全部
首先你这个按钮要放到舞台上,给这个按钮加一个实例名如:btn_return
然后在主时间轴,有这个按钮的帧上写如下代码:
btn_return.addeventlistener(mouseevent.mouse_down,replayevent);
function
replayevent(e:mouseevent):void
{
gotoandplay(1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式