为什么我收到此错误? AS3

时间:2015-07-23 18:52:33

标签: actionscript-3 compiler-errors

我有这个简短的代码:

        public function ball() 
        {

            minge.addEventListener(MouseEvent.CLICK, getBack);
        }

        private function getBack()
        {
        trace("test");  
        }

我跑的时候出现这个错误:

Line 15 1120: Access of undefined property minge.

我不明白为什么会出现这种错误...我把照片看得更清楚了。

Screenshot

minge是一个实例......是资产

你能告诉我该怎么做才能解决这个问题吗?

提前致谢!

另请查看此图片以获得澄清: Screenshot2 http://oi61.tinypic.com/14dk5eq.jpg

2 个答案:

答案 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");  
    }

结论

  1. 在对象上调用方法。使用引用访问对象。实例名称是一种引用。但是,一个类总是写在它的一个实例的“I”透视图中(但不是特定的一个)。这就是显式实例名称不起作用的原因。这就是为什么你需要使用this来引用类的实例。
  2. this可以在类中省略,因为this是默认范围(可以这么说)