1

这是代码

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 文件,请单击此处

4

2 回答 2

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

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

于 2012-09-24T13:58:24.580 回答
0

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

所以要让事情在您的特定情况下工作:删除库中的 as 链接名称,通过单击这些项目内的后退按钮并设置它们的实例名称,然后您的代码将使用该名称引用该按钮来编辑 hillPage 和 PondPage。

于 2012-09-24T16:09:33.840 回答