未定义属性cerc的访问量

时间:2015-07-21 17:38:32

标签: actionscript-3 compiler-errors

我在AS3中有这个代码:

package clase
{
    import flash.display.MovieClip;
    import flash.events.Event;
    /**
     * ...
     * @author cry
     */
    public class CercNegru extends MovieClip
    {
        var growthRate:Number = 2;
        cerc.addEventListener(Event.ENTER_FRAME,grow);

        public function CercNegru() 
        {

        }
        private function grow(e:Event):void
        {
            trace("asdda");
        }
    }

}

运行此程序时收到错误:

    Line 12 1120: Access of undefined property cerc.
    Line 12 1120: Access of undefined property grow.

我把图片更好地理解:

enter image description here

你能帮我解决这个问题吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

错误是因为在类文件中,所有功能代码都需要存在于函数内部。

所以选择这一行,它只是在课堂上浮动:

cerc.addEventListener(Event.ENTER_FRAME,grow);

然后进入构造函数(假设您希望它在实例化类时立即运行):

public function CercNegru() 
{
    cerc.addEventListener(Event.ENTER_FRAME,grow);
}

在类文件中,构造函数(名称与类名完全匹配的函数)就是使用new关键字调用的函数。

这样做new CercNegru()会调用该函数。

现在,我还假设此类文件附加到FlashPro库对象,并且您在时间轴上有一些实例名称为cerc的内容。 (如果不是这种情况,那就是你错误的原因)

时间轴的东西虽然在构造函数中始终不可用,但您可能需要等到实例添加到屏幕上。

public var cerc:MovieClip; //you may want to create a reference to the timeline item, so you get compile time checking

public function CercNegru() 
{
    this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}

private function addedToStage(e:Event):void {
    this.removeEventListener(Event.ADDED_TO_STAGE, addedToStage);

    //this is the equivalent of timeline code now

    cerc.addEventListener(Event.ENTER_FRAME,grow);
}

答案 1 :(得分:0)

package clase
{
    import flash.display.MovieClip;
    import flash.events.Event;
    /**
    * ...
    * @author cry
    */
   public class CercNegru extends MovieClip
   {
       var growthRate:Number = 2;

       var cerc:DisplayObject; // ADD THIS

       public function CercNegru() 
       {
           cerc.addEventListener(Event.ENTER_FRAME,grow);
       }

       private function grow(e:Event):void
       {
           trace("asdda");
       }
    }
}

由于错误说cerc未定义。所以你应该定义它。假设你的'cerc'是Sprite

var cerc:Sprite;