1119:访问可能未定义的属性单击具有静态类型Class的引用

时间:2011-08-21 14:43:32

标签: actionscript-3 flash-cs5

我正在使用flash cs5制作寓教于乐的游戏,我真的很擅长使用flash,事实上我们从未在学校解决它,但我坚持要学习它。

在我的代码中,我遇到了此错误

  

C:\ Users \ acer \ Desktop \ JikanLibrary \ Main.as,第16行1119:访问可能未定义的属性单击带有静态类型Class的引用。

这是我在程序中使用的代码

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

public class Main extends MovieClip
{
    var startPage:StartPage;
    var jikanBookshelf:JikanBookshelf;

    public function Main()
    {
        startPage = new StartPage;
        jikanBookshelf = new JikanBookshelf;

        startPage.jikanBookshelf.addEventListener(MouseEvent.Click, onJikanBookshelf);

        addChild(startPage);

        function onJikanBookshelf(event:MouseEvent):void
        {
            addChild(jikanBookshelf);
            removeChild(startPage);
        }


    }
}
}

错误在此行

startPage.jikanBookshelf.addEventListener(MouseEvent.Click, onJikanBookshelf);

由于我是flash的新手,我真的不知道我的代码出了什么问题,它在我放鼠标事件之前就已经工作了。我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:3)

ActionScript是一种区分大小写的语言。这意味着ClickCLICK不同。所以你需要的是MouseEvent.CLICK

为什么CLICK全部大写?大多数属性名称不是。”,你可能会问。

这是因为CLICK是MouseEvent的静态常量属性,ActionScript(和许多其他语言)程序员之间的约定是静态常量以全部大写形式编写,以便在视觉上区别于其他变量。 / p>

  • 'static'表示它是MouseEvent类的属性,而不是MouseEvent的实例。
  • 'const'意味着它不是变量:你无法改变它的价值。

答案 1 :(得分:0)

这是名称冲突问题:类定义名称与对象名称相同。

您的脚本中的问题是您有一个类定义名startPage,并且您正在尝试创建一个名称相同的对象startPage

您必须将对象名称更改为其他名称。我们说startpage1