Видя, как вы определили ваше перечисление:
None = 0x0000,
Left = 0x0001,
Right = 0x0002,
Up = 0x0004,
Down = 0x0008,
Forward = 0x0016,
Backward = 0x0032
Вы путаете шестнадцатеричные и десятичные числа.
В перечислении [Flags]
, двоичном представлении значений вашего перечислениядолжно быть примерно так:
0000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0100
0000 0000 0000 0000 0000 0000 0000 1000
В десятичном виде это степени 2: 1, 2, 4, 8, 16 и т. д.
Но способ записи значений начинается с0x
, что обозначает шестнадцатеричное значение.Таким образом, вы на самом деле устанавливаете значения для регистра enum как шестнадцатеричные числа 1, 2, 4, 8 и 16.
Вы должны удалить эти 0x
:
None = 0,
Left = 1,
Right = 2,
Up = 4,
Down = 8,
Forward = 16,
Backward = 32