6

コードを C# から Haxe NME に変換しようとしています。列挙型をフラグとして使用します。

[Flags]
enum State
{
    StateOne    = 1,
    StateTwo    = 2,
    StateThree  = 4
}

そして、それを使用してください

if (someObj.HasState(State.StateOne | State.StateTwo))
{
    // Contains both the states. Do something now.
}

Haxe NME でこれを行う方法がわかりませんでした。

ありがとう。

4

2 に答える 2

1

私はそれを見つけることができました。列挙型の使用には問題がありましたが、定数を使用すると成功しました。これは、私が使用した簡単なテスト ファイルです。

package ;

class FlagsTest
{

    static inline var FLG_1:Int = 1;
    static inline var FLG_2:Int = 2;

    public static function main() : Void
    {
        var flag:Int = FLG_1;
        if (hasFlag(flag, FLG_1))
        {
            trace ("Test 1 passed");
        }
        flag |= FLG_2;
        if (hasFlag(flag, FLG_2))
        {
            trace ("Test 2 passed");
        }
    }

    public static function hasFlag( flags:Int, flag:Int ) : Bool
    {
        return ((flags & flag) == flag) ? true : false;
    }

}

出力:

FlagsTest.hx line 14: Test 1 passed
FlagsTest.hx line 19: Test 2 passed
于 2013-05-16T13:37:10.027 に答える