动作脚本3:返回历史记录按钮

时间:2014-04-09 20:48:27

标签: actionscript-3 flash actionscript history back-button

提前抱歉。我是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;
    }
}

非常感谢。

2 个答案:

答案 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;
    }
}