1

AS3 のクラスからランダムな定数を取得することは可能ですか?

class Constat
{
    public static const constA:String = "const1";
    public static const constB:String = "const2";
    ...

    /** this method must return a random constant */
    public static function getRandomConst():String
    {
         -------------------------------
    }
}
4

3 に答える 3

2

を使用describeType()して、クラスで定義されているすべての定数を収集し、そこからランダムなものを選択できます。

public class Constat
{

    public static const constA:String = "const1";
    public static const constB:String = "const2";

    private static var _constants:Vector.<String>;


    public static function getRandomConst():String
    {
        if(_constants === null)
        {
            _constants = new <String>[];

            var def:XML = describeType(Constat);

            for each(var i:XML in def.constant)
            {
                _constants.push(i.@name);
            }
        }


        // Select random.
        var con:String = _constants[ int(Math.random() * _constants.length) ];

        return Constat[con];
    }

}
于 2013-03-04T02:58:09.567 に答える
0

const 名とそれに続く数値に設定します。を使用して Dictionary アプローチ メソッドを使用しMath.random()ます。

これを試して

package {

    import flash.display.Sprite;

    public class MyClass extends Sprite
    {
        public static const constA:String = "00";
        public static const constB:String = "11";
        public static const constC:String = "22";
        public static const constD:String = "33";
        public static const constE:String = "44";
        public static const constF:String = "55";
        public static const constG:String = "66";
        public static const constH:String = "77";
        public static const constI:String = "88";
        public static const constJ:String = "99";
                             .
                             .
                             .

        public function MyClass() 
        {   
            MyClass.test();
        }

        public static function mapped(i:int):String
        {
            //65 is A
            return String.fromCharCode(65+i);                   
        }

        public static function test():void
        {
            trace(MyClass["const"+mapped(int(Math.random()*10))]);
        }

    }
}
于 2013-03-03T11:31:45.343 に答える
0

はい、いつでもすべての値を配列に貼り付けて、ランダムに選択することができます。

于 2013-03-03T08:42:00.300 に答える