Flash 错误1119和1120

Flash 错误1119和1120,flash,getter,Flash,Getter,我试图使用getter,但在将代码浓缩到我能想到的最简单的事情之后,我仍然会出现同样的错误。这是错误1119的代码 主要内容: 玩家: package { public class Player { private var _numberOfKeys:uint; public function Player() { _numberOfKeys = 23; } public f

我试图使用getter,但在将代码浓缩到我能想到的最简单的事情之后,我仍然会出现同样的错误。这是错误1119的代码

主要内容:

玩家:

package
{
    public class Player
    {
        private var _numberOfKeys:uint;

        public function Player()
        {
            _numberOfKeys = 23;
        }
        public function get value():uint
        {
            return _numberOfKeys;
        }
    }
}
在尝试使用get函数时,我在两行上都遇到了错误,如果我将Player get value函数更改为public static函数,它会读取_numberOfKeys的值并说它未定义,但如果我硬编码一个数字,它会将其传递给主类,而不会出现任何问题。

如果您希望主类包含Player的实例,然后从main的init实例化一个播放器:

否则,如果您希望播放器的value属性是静态的,那么它必须能够引用静态初始化的_numberOfKeys,例如:

package
{
    public class Player
    {
        private static var _numberOfKeys:uint = 23;

        public static function get value():uint
        {
            return _numberOfKeys;
        }
    }
}

为了理解这个问题,您需要理解类和类实例之间的区别。 静态函数可以从类本身访问,而非静态函数只能在对象启动后访问

要解决第一种情况,您需要编写以下内容:

package
{
    import flash.display.MovieClip;

    public class Main extends MovieClip
    {
        public function Main()
        {
            init();
        }
        public function init():void
        {
            var instance:Player = new Player();
            if (instance.value == 23)
            {
                trace("if statment")
            }
            trace(Player.value);
        }
    }
}

将value函数更改为static时出现错误的原因是_numberOfKeys不是静态的。

谢谢,我已经为此争论了好几天,找不到简单的解释。只是想在我的脑海里说清楚。如果我使用addChild将电影剪辑放在舞台上,那么我为电影剪辑使用的任何变量也将保留他们绑定的类?如果我只是使用一个单独的类来保存变量,那么我需要在主类中创建一个变量来访问另一个类?
package
{
    public class Player
    {
        private static var _numberOfKeys:uint = 23;

        public static function get value():uint
        {
            return _numberOfKeys;
        }
    }
}
package
{
    import flash.display.MovieClip;

    public class Main extends MovieClip
    {
        public function Main()
        {
            init();
        }
        public function init():void
        {
            var instance:Player = new Player();
            if (instance.value == 23)
            {
                trace("if statment")
            }
            trace(Player.value);
        }
    }
}