事件监听器在第2帧丢失

时间:2012-08-22 04:17:47

标签: actionscript-3

我可以知道为什么我需要再次在函数returnToInput中添加“ComputeBtn.addEventListener(MouseEvent.CLICK,computeLoan)”,否则第1帧的ComputeBtn按钮将无法再次运行。我没有删除监听器。只需转到第二帧以显示结果,然后返回第一帧输入数据。

package {
    import flash.display.*;
    import flash.events.*;

    //THE CLASS DEFINITION
    public class carApp extends MovieClip {
        function carApp() {
            gotoAndStop(1);
            ComputeBtn.addEventListener(MouseEvent.CLICK,computeLoan);
        }


        function computeLoan(event:MouseEvent) {
                              gotoAndStop(2);
                              trace("Show result");
            StartAgainBtn.addEventListener(MouseEvent.CLICK,returnToInput);
        }


        function returnToInput(event:MouseEvent) {
            gotoAndStop(1);
            ComputeBtn.addEventListener(MouseEvent.CLICK,computeLoan);
        }

    }
}

1 个答案:

答案 0 :(得分:1)

在您的文档类中,构造函数只运行一次,因此它只添加一次侦听器。移到第二帧会删除它。

在您的代码中,每次移动到第二帧时,您都会为“StartAgainBtn”设置监听器,但如果您没有“ComputeBtn”的额外监听器,那么每次移动到一个不同的框架,你正在失去听众。

如果您在时间轴的第一帧而不是文档类上使用了相同的代码,那么它可以像您期望的那样为“ComputeBtn”添加一次侦听器。这是因为第一帧的所有代码都会在您返回时重新运行。