编辑:为什么这么多的downvotes?在Stack Overflow上询问与Flash有关的问题是否违法?
请帮忙。我正在明天的午夜工作,我准备撕掉我的头发了。我是ActionScript和Flash Builder的新手,所以这可能是一个很容易解决的问题。我想我知道它是什么,但我不确定......
我正在开发一个天气应用程序。我在Flash CS5中设计了GUI。界面有2帧。第一帧是具有邮政编码输入和名为“提交”的按钮实例的菜单。在第二帧,它有另一个名为“更改”的按钮实例,它将您带回第一帧菜单。
在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.");
}
}
}
每次单击其中一个按钮实例时,运行设置按钮功能不是我的一杯茶。这是由帧或其他我可能会查看的东西造成的吗?
答案 0 :(得分:1)
我相信你有两个关键帧&两者都有一个名为按钮的按钮组件的实例。
如果您正在使用时间轴,请尝试将按钮放在一个单独的图层中,只有一个关键帧。
如下所示:
确保您每次都使用相同的按钮。不会在每一帧上产生新的。