AS3:刷新功能

时间:2014-06-17 18:58:54

标签: actionscript-3 function reset

在Action Script 3中是否有一种刷新功能的方法?我想我正在寻找的是当我切换屏幕以重置或刷新功能时,该功能也被绑定到阵列中,因此我不知道这是否会影响任何事情。该程序正在这样工作,用户选择了59个数字5.所以这里是我正在使用的代码和我试图重置的代码。

    var pickFive:Array = new Array (5);
    var m_iNextElement:int = 0;
    var b1:TextField = new TextField();
    var b2:TextField = new TextField();
    var b3:TextField = new TextField();
    var b4:TextField = new TextField();
    var b5:TextField = new TextField();

    var myFormat:TextFormat = new TextFormat();
    myFormat.size = 45;

    Game.board.btn_1.addEventListener(MouseEvent.CLICK, btn1);

//Trying to reset this
    function btn1(event:MouseEvent):void{
        if(m_iNextElement <= 4){
        Game.board.btn_1.gotoAndStop(2);
        pickFive[m_iNextElement] = 1;
        m_iNextElement++;

        b1.defaultTextFormat = myFormat;
        b1.text = pickFive[0];
        b1.x = 510;
        b1.y = 103;
        addChild(b1);

        b2.defaultTextFormat = myFormat;
        b2.text = pickFive[1];
        b2.x = 593;
        b2.y = 103;
        addChild(b2);

        b3.defaultTextFormat = myFormat;
        b3.text = pickFive[2];
        b3.x = 673;
        b3.y = 103;
        addChild(b3);

        b4.defaultTextFormat = myFormat;
        b4.text = pickFive[3];
        b4.x = 760;
        b4.y = 103;
        addChild(b4);

        b5.defaultTextFormat = myFormat;
        b5.text = pickFive[4];
        b5.x = 840;
        b5.y = 103;
        addChild(b5);
        }
    }

1 个答案:

答案 0 :(得分:0)

要进行重置,您只需要创建一个重置功能。也就是说,一个函数包含指令,以便将各种变量调整为首选,直到被认为是重置为止。然后,无论何时需要发生这种情况,您只需触发该函数的执行,例如:do_Reset();确保do_Reset不是基于事件的函数,例如:function do_Rest (event:MouseEvent):void如果您尝试手动执行它将无效只有鼠标事件可以触发该功能,如果它的设置是这样的..

无论如何,听起来你并没有真正寻找大多数人所谓的重置,而是更多的所谓的重新运行。 重置意味着您从零开始,事情发生并重置是为了重新开始,就像新的开始一样,重新运行就是事情​​发生的时候你需要的东西重新发生。

所以可能的解决方案..

    var pickFive:Array = new Array(5);
    var m_iNextElement:int = 0;
    var b1:TextField = new TextField();
    var b2:TextField = new TextField();
    var b3:TextField = new TextField();
    var b4:TextField = new TextField();
    var b5:TextField = new TextField();

    var myFormat:TextFormat = new TextFormat();
    myFormat.size = 45;

    Game.board.btn_1.addEventListener(MouseEvent.CLICK, btn1);

    function btn1(event:MouseEvent):void
    {
        trace(" *** Clicked btn1 : Setting up game... ");

        Game.board.btn_1.gotoAndStop(2);

        setup_Board(); //to manually run that function
    }

    //Trying to reset this...
    function setup_Board():void
    {
        if (m_iNextElement <= 4)
        {

            pickFive[m_iNextElement] = 1;
            m_iNextElement++;

            b1.defaultTextFormat = myFormat;
            b1.text = pickFive[0];
            b1.x = 510; b1.y = 103; addChild(b1);

            b2.defaultTextFormat = myFormat;
            b2.text = pickFive[1];
            b2.x = 593; b2.y = 103; addChild(b2);

            b3.defaultTextFormat = myFormat;
            b3.text = pickFive[2];
            b3.x = 673; b3.y = 103; addChild(b3);

            b4.defaultTextFormat = myFormat;
            b4.text = pickFive[3];
            b4.x = 760; b4.y = 103; addChild(b4);

            b5.defaultTextFormat = myFormat;
            b5.text = pickFive[4];
            b5.x = 840; b5.y = 103; addChild(b5);
        }
    }

    function Game_Over():void
    {
        trace(" *** Game Over : Re-set game for new try... ");

        Game.board.btn_1.gotoAndStop(1);

        reset_Board(); //to manually run that function
    }

    function reset_Board():void
    {
        b1.text = b2.text = b3.text = b4.text = b5.text = "";

        removeChild(b1); removeChild(b2); removeChild(b3);
        removeChild(b4); removeChild(b5);

        trace(" *** Re-set complete... ");

        Game.board.btn_1.addEventListener(MouseEvent.CLICK, btn1);

        //// Or manual function re-run without waiting for above mouse click
        //setup_Board();
    }

另外,你需要一个游戏而不是功能来处理事情。这可以是Mouse_EventTimer_Event(例如:带有&#34的MClip;重启&#34;会显示,其点击监听器应定位游戏结束功能I&#39包括。或者计时器只需在一定时间倒计时后手动运行Game_Over();

否则只需多次重新运行就会导致内存使用量增加,而且通常会使系统变慢。考虑你的鼠标点击,只是不断添加5个动画片段,10次点击后你在屏幕上和RAM内存中有50个MClips,但是在点击X-num小时之后,你会责怪Adobe因为这样糟糕的程序员无法获得Flash&#34右&#34;没有它杀死你的电脑。并且威胁要把你的技能带到像HTML或MS Publisher这样的更好的系统(..只是开玩笑)