代码之家  ›  专栏  ›  技术社区  ›  wareagle1591

调用按钮时连续获取类型错误#1010

  •  1
  • wareagle1591  · 技术社区  · 12 年前

    这是代码

    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 回复  |  直到 12 年前
        1
  •  0
  •   Will Kru    12 年前

    您引用的是hillPage.backToStartButton和pondPage.backToStartButton,但浏览库中的这些项时,似乎没有为这些按钮提供实例名称,导致了未定义的错误。此外,您还创建了AS链接,这在本例中是不必要的,因为这些项不是动态创建的,也不是实现自定义类的。您似乎混淆了一些事情:AS链接不用于通过代码引用实例。

    因此,为了在您的特定情况下发挥作用:删除库中的as链接名称,通过单击这些项目中的后退按钮编辑hillPage和pondPage,并设置它们的实例名称,然后您的代码将使用它们来引用按钮。

        2
  •  0
  •   Austin Henley    12 年前
    function onBackButtonClick_Hill(event:MouseEvent):void
    {
        addChild(startPage);
        removeChild(hillPage);
    }
    

    在这个函数中,您调用 removeChild(hillPage) 但是 hillPage 不是你的孩子 Main 班 将此页面作为子页面添加,或尝试类似操作 if(this.contains(hillPage)) removeChild(hillPage);