Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 1119:访问可能未定义的属性单击静态类型类的引用_Actionscript 3_Flash Cs5 - Fatal编程技术网

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

Actionscript 3 1119:访问可能未定义的属性单击静态类型类的引用,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,我正在用flash cs5制作一个教育娱乐游戏,我对使用flash非常陌生,事实上我们在学校还没有解决过这个问题,但我坚持要学习 在我的代码中,我遇到了这个错误 C:\Users\acer\Desktop\JikanLibrary\Main.as,第16 1119行:访问可能未定义的属性通过静态类型类的引用单击 这是我在程序中使用的代码 package { import flash.display.MovieClip; import flash.events.MouseEvent; publi

我正在用flash cs5制作一个教育娱乐游戏,我对使用flash非常陌生,事实上我们在学校还没有解决过这个问题,但我坚持要学习

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

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

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

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,在jikanBookshelf上)


由于我对flash非常陌生,我真的不知道我的代码出了什么问题,在我放置鼠标事件之前,它已经工作了一段时间。我希望有人能帮助我。

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

您可能会问:“为什么单击全部大写?大多数属性名称都不是。”

这是因为CLICK是MouseEvent的一个静态常量属性,ActionScript(和许多其他语言)程序员的惯例是,静态常量都是用大写字母编写的,以便从视觉上区别于其他变量

  • “static”表示它是MouseEvent类的属性,而不是MouseEvent实例的属性
  • “const”表示它不是一个变量:您不能更改它的值

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

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


您必须将对象名称更改为其他名称。比如说
StartPage 1

顺便说一句:
新的StartPage
也不起作用。它应该是
newstartPage()
。构造函数也是一个函数。实际上,
newstartpage
将起作用。我以前也这么认为,但最近我了解到,AS3中带有非参数化构造函数的类可以在没有括号的情况下实例化,这不是我个人会做的事情。我的新startStartpage正在运行,这一行是我唯一的问题,我试图改变点击点击的方式,结果错误变成了这样的类型错误:错误#1010:一个术语没有定义,没有属性。at Main()[I:\JikanLibrary\Main.as:16]@MisaChan现在这将是当您尝试使用它时尚未定义的
onJikanBookshelf
函数。要么将其移动到类级别(从主构造函数:
private function onJikanBookShelf(event:MouseEvent):void{…}
),要么在使用它之前将其定义为
function
类型的变量(
var onJikanBookShelf:function=function(event:MouseEvent):void{…}
)。在这种情况下,第一个选项是您的最佳选择。@RIAstar,非常抱歉,我没有注意到我在startPage.jikanBookshelf.addEventListener(MouseEvent.Click,onJikanBookshelf)中输入了错误的名称;我的库中的jikanBookshelf_uu是为书架页面指定的名称,我在参考资料中意识到它应该是插入startPage.BtnBookshelf.addEventListener的按钮名称(MouseEvent.Click,on jikanBookshelf);BtnBookshelf是我的按钮的名称,它会触发它进入下一页,当我更改它时,它会产生相同的错误,如果我拼写错误但所有变量拼写正确,我已经重新检查了我的库,或者更改类名
开始页
。类使用大写首字母,实例(对象)使用小写首字母是一种惯例。