提前抱歉。我是Actionscript的新手,试图实现历史回复按钮,而不是转到上一帧按钮;在flash电影中,而不是在Flash网页中)。我的方法是使用一个数组并在任何访问过的帧上将当前帧推送到它。我的代码不起作用,它正在回复错误#1502。
请帮我修改我现在的代码:
var back:Array = new Array(); //global variable
stop();
back.push(MovieClip(this.root).currentFrame); // in every visited frame
back.addEventListener(MouseEvent.CLICK, backGoTo);
function backGoTo(event:MouseEvent):void
{
switch (currentLabel)
{
case "framelabel":
for (var i:int = 0; i < back.length; i++)
{
gotoAndStop(back[i]); // expected to go to the last visited frame.
}
break;
}
}
非常感谢。
答案 0 :(得分:1)
要获取数组的最后一个元素,请使用back[back.length-1]
,或者如果要删除最后一个元素并同时将其取回back.pop();
。所以在你的情况下,对于循环没有用,这是完全错误的..在这种情况下检查数组的所有元素是无稽之谈。
function Softkey3GoTo(event:MouseEvent):void
{
switch (currentLabel)
{
case "m_1":
case "m_2":
case "reply":
case "messages":
gotoAndStop(back[back.length-2]); // -2 because the current one is -1, the previous frame is -2.
break;
}
}
答案 1 :(得分:0)
在探索Array .pop方法后,我可以找到我的后退按钮的解决方案。这是我的全局后退历史按钮的代码。在每一帧中你必须将它推到阵列。调用数组的最后一个元素并同时删除它:
var back:Array = new Array(); //global variable
stop();
back.push(MovieClip(this.root).currentFrame); // in every visited frame
back.addEventListener(MouseEvent.CLICK, backGoTo);
function backGoTo(event:MouseEvent):void
{
switch (currentLabel)
{
case "framelabel":
back.pop();
gotoAndStop(back.pop());
break;
}
}