Actionscript 3 1119:访问可能未定义的属性单击静态类型类的引用
我正在用flash cs5制作一个教育娱乐游戏,我对使用flash非常陌生,事实上我们在学校还没有解决过这个问题,但我坚持要学习 在我的代码中,我遇到了这个错误 C:\Users\acer\Desktop\JikanLibrary\Main.as,第16 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
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是我的按钮的名称,它会触发它进入下一页,当我更改它时,它会产生相同的错误,如果我拼写错误但所有变量拼写正确,我已经重新检查了我的库,或者更改类名开始页
。类使用大写首字母,实例(对象)使用小写首字母是一种惯例。