错误1119和1120

时间:2012-11-05 04:39:21

标签: flash getter

我试图使用一个吸气剂,但在将代码煮沸到我能想到的最简单的事情后,我仍然会遇到同样的错误。这是错误1119的代码

主:

package
{
    import flash.display.MovieClip;

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

播放器:

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

        public function Player()
        {
            _numberOfKeys = 23;
        }
        public function get value():uint
        {
            return _numberOfKeys;
        }
    }
}

如果我将玩家获取值函数更改为"公共静态函数"我在尝试使用get函数的两行上都会出错。它读取了_numberOfKeys的值,并说它未定义,但是如果我对一个数字进行硬编码,它会将它传递给Main类而没有任何问题。

2 个答案:

答案 0 :(得分:0)

如果您希望Main类包含Player的实例,请从主init()实例化播放器:

package
{
    import flash.display.MovieClip;

    public class Main extends MovieClip
    {
        public var player:Player;

        public function Main()
        {
            init();
        }
        public function init():void
        {
            player = new Player();
            trace(player.value);
        }
    }
}

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

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

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

答案 1 :(得分:0)

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

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

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不是静态的。