1

私はゲッターを使おうとしていますが、コードを最も単純なものに煮詰めた後でも、同じエラーが発生することがあります。エラー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関数を使用しようとすると、両方の行でエラーが発生します。Playergetvalue関数を「publicstaticfunction」に変更すると、_numberOfKeysの値が読み取られ、未定義であると表示されますが、数値をハードコーディングすると、問題のないメインクラス。

4

2 に答える 2

0

Mainクラスにのインスタンスを含める場合は、 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;
        }
    }
}
于 2012-11-05T06:00:41.657 に答える
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が静的ではないためです。

于 2012-11-05T06:01:55.617 に答える