我有这个简短的代码:
public function ball()
{
minge.addEventListener(MouseEvent.CLICK, getBack);
}
private function getBack()
{
trace("test");
}
我跑的时候出现这个错误:
Line 15 1120: Access of undefined property minge.
我不明白为什么会出现这种错误...我把照片看得更清楚了。
minge
是一个实例......是资产
你能告诉我该怎么做才能解决这个问题吗?
提前致谢!
另请查看此图片以获得澄清: Screenshot2 http://oi61.tinypic.com/14dk5eq.jpg
答案 0 :(得分:0)
图片链接不起作用,但我的猜测是你在舞台上没有minge的命名实例。它不能只是在库中你必须将一个拖到舞台上并在属性中给它命名minge或者从代码中调出它并将它附加到舞台上。还要更新鼠标事件处理程序,如下所示:
function getBack(event:MouseEvent):void
{
trace("test");
}
minge.addEventListener(MouseEvent.CLICK, getBack, false, 0, true);
另请注意,因为您的事件被附加在功能球内部,所以在将事件附加到该影片剪辑之前,您必须先调用该功能。
编辑:将您的操作层上的代码更改为上面的代码。确保你在舞台上有一个minge实例。
答案 1 :(得分:0)
不需要实例名称minge
。
问题是您将实例名称提供给作为类本身实例的对象。即使它有效,也会是错误的代码,因为该类只适用于具有此特定实例名称的单个实例。
仅当您要从其他位置引用对象时,才需要实例名称。但是与对象关联的类是对象的表示。当你在课堂上时,你不是“在别的地方”,而是在对象中/上面。
因此,当您在与对象关联的类中编写代码时,您的观点来自对象。
你作为一个人总是把自己称为“我”,你(通常)不会用你父母给你的名字或你朋友用来识别你的昵称来指称自己。
话虽如此:在球类中,球是“我”。在As3中等效于“我”或“我自己”的关键字是this
,因此如果您更改代码,它应该可以正常工作:
public function ball()
{
this.addEventListener(MouseEvent.CLICK, getBack); // this line changed
}
private function getBack()
{
trace("test");
}
由于类始终以与其关联的对象的角度编写,因此this
实际上是可选的。这意味着如果在没有显式引用对象的情况下调用方法,默认情况下将在this
上调用它。上面的代码简化为以下内容:
public function ball()
{
addEventListener(MouseEvent.CLICK, getBack); // this line changed again
}
private function getBack()
{
trace("test");
}
this
来引用类的实例。this
可以在类中省略,因为this
是默认范围(可以这么说)