我可以知道为什么我需要再次在函数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);
}
}
}
答案 0 :(得分:1)
在您的文档类中,构造函数只运行一次,因此它只添加一次侦听器。移到第二帧会删除它。
在您的代码中,每次移动到第二帧时,您都会为“StartAgainBtn”设置监听器,但如果您没有“ComputeBtn”的额外监听器,那么每次移动到一个不同的框架,你正在失去听众。
如果您在时间轴的第一帧而不是文档类上使用了相同的代码,那么它可以像您期望的那样为“ComputeBtn”添加一次侦听器。这是因为第一帧的所有代码都会在您返回时重新运行。