-2

我正在处理明天午夜到期的任务,我正要扯掉我的头发。我对 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.");
        }
    }
}

每次单击按钮实例之一时运行设置按钮功能不是我的一杯茶。这是由框架或我可能正在查看的其他东西引起的吗?

4

1 回答 1

1

我相信您有两个关键帧,并且都有一个名为button的按钮组件实例。

如果您正在处理时间线,请尝试将按钮放在单独的图层中,只有一个关键帧。

类似于以下内容:

在此处输入图像描述

确保您每次都引用相同的按钮,而不是在每一帧上产生新的按钮。

于 2012-12-02T07:50:25.950 回答