我正在处理明天午夜到期的任务,我正要扯掉我的头发。我对 ActionScript 和 Flash Builder 还很陌生,所以这可能是一个很容易解决的问题。我想我知道它是什么,但我不确定...
我正在开发一个天气应用程序。我在 Flash CS5 中设计了 GUI。接口有 2 帧。第一帧是菜单,它有一个邮政编码输入和一个名为“提交”的按钮实例。在第二帧,它有另一个名为“change”的按钮实例,它将带您回到第一帧菜单。
在 Flash Builder 4 中,我编写了一个类来扩展名为 Application 的 GUI。当 Main.as 实例化它时,构造函数运行。然而,这是我的第一个问题。
public class Application extends InputBase {
public function Application() {
super();
// Y U NO WORK???
this.gotoAndStop(1);
this.change.tfLabel.text = "Change";
}
}
当我运行调试时,它抛出了 #1009 错误,说它无法访问未定义对象的属性或方法。它在 Flash CS5 的第 2 帧上定义。我认为这是问题所在...... ActionScript 不是基于框架的编程语言吗?就像,您不能在第 1 帧上访问第 2 帧的代码?但是,我对此感到困惑,因为我没有在时间线上编码?
无论如何,我想到了一个解决方案。它有点工作,但它丑陋。
public class Application extends InputBase {
public function Application() {
super();
// Y U NO WORK???
this.gotoAndStop(1); // when app is first ran, it will stop on the first frame which is the menu frame
setButton(this.submit, "Submit", 1);
setInput(this.tfZipCode);
}
private function submitZip(e:MouseEvent):void {
this.nextFrame();
setButton(this.change, "Change", 2);
}
private function menu(e:MouseEvent):void {
this.prevFrame();
setButton(this.submit, "Submit", 1); // if I comment this out, the submit button will return to the default text label and it forgets it event.
}
private function setButton(button:ButtonBase, string:String="", action:uint=0):void {
button.buttonMode = true;
button.mouseChildren = false;
button.tfLabel.selectable = false;
button.tfLabel.text = string;
switch (action) {
case 1:
button.addEventListener(MouseEvent.CLICK, submitZip);
break;
case 2:
button.addEventListener(MouseEvent.CLICK, menu);
break;
default:
trace("Action code was invalid or not specified.");
}
}
}
每次单击按钮实例之一时运行设置按钮功能不是我的一杯茶。这是由框架或我可能正在查看的其他东西引起的吗?