调用按钮时不断收到类型错误#1010

时间:2012-09-24 12:54:15

标签: flash actionscript

这是代码

package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Main extends MovieClip
{
    var startPage:StartPage;
    var hillPage:HillPage;
    var pondPage:PondPage;

    public function Main()
    {
        startPage = new StartPage;
        hillPage = new HillPage;
        pondPage = new PondPage;
        addChild(startPage);

        //Add event listeners
        startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick);
        startPage.pondButton.addEventListener(MouseEvent.CLICK, onPondButtonClick);
        hillPage.backToStartButton.addEventListener(MouseEvent.CLICK, onBackButtonClick_Hill);
        pondPage.backToStartButton.addEventListener(MouseEvent.CLICK, onBackButtonClick_Pond);
    }
    //Event handlers
    function onHillButtonClick(event:MouseEvent):void
    {
        addChild(hillPage);
        removeChild(startPage);
    }
    function onPondButtonClick(event:MouseEvent):void
    {
        addChild(pondPage);
        removeChild(startPage);
    }
    function onBackButtonClick_Hill(event:MouseEvent):void
    {
        addChild(startPage);
        removeChild(hillPage);
    }
    function onBackButtonClick_Pond(event:MouseEvent):void
    {
        addChild(startPage);
        removeChild(pondPage);
    }
}
}

所以我可以访问HillButton和PondButton就好了,但backToStartButton似乎正在向我抛出未定义的术语,所有的帮助将不胜感激

如果您想查看代码和fla文件,请单击here

2 个答案:

答案 0 :(得分:0)

function onBackButtonClick_Hill(event:MouseEvent):void
{
    addChild(startPage);
    removeChild(hillPage);
}

在此功能中,您拨打removeChild(hillPage),但hillPage不是您的Main课程的子级。 以小孩的身份添加此页面,或尝试if(this.contains(hillPage)) removeChild(hillPage);

之类的内容

答案 1 :(得分:0)

您正在引用hillPage.backToStartButton和pondPage.backToStartButton但是浏览库中的这些项目,似乎您没有为这些按钮提供实例名称,从而导致未定义的错误。您还创建了AS链接,在这种情况下不需要这些链接,因为这些项目不是动态创建的,也不是实现自定义类。看起来你很困惑:AS链接不用于通过代码引用实例。

因此,要在您的特定情况下工作:删除库中的链接名称,通过单击这些项目中的后退按钮编辑hillPage和pondPage并设置其实例名称,然后您的代码将用于引用按钮