У меня есть перечисление, определенное следующим образом:
public enum Direction
{
Left,
Right,
Up,
Down
}
И у меня следующая переменная в классе:
private Direction direction;
В конструкторе я назначаю переменную:
direction = Direction.Right;
Затем, в методе того же класса, я пытаюсь присвоить новое значение Enum:
direction = Direction.Down;
Но это не позволит мне!Он продолжает возвращаться к правильному значению, даже если единственное место, где он установлен, находится в конструкторе!
Что происходит?o_O
РЕДАКТИРОВАТЬ - БОЛЬШЕ КОДА
namespace MyFirstGame
{
public enum Direction
{
Left,
Right,
Up,
Down
}
}
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace MyFirstGame
{
public class Invader : Sprite, IMovable
{
private InvaderType invaderType { get; set; }
private Direction direction;
private Vector2 speed;
public Invader(Texture2D image, Vector2 position)
: base(image, position, new Point(30, 16), new Point(0, 0), new Point(2, 0))
{
direction = Direction.Right;
speed.X += 30;
}
public override void Update(GameTime gameTime, Rectangle clientBounds)
{
timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds;
if (timeSinceLastFrame > milliSecondsPerFrame)
{
timeSinceLastFrame -= milliSecondsPerFrame;
++currentFrame.X;
if (currentFrame.X >= SheetSize.X)
{
currentFrame.X = 0;
}
Move(direction, clientBounds);
}
}
public void Move(Direction direction, Rectangle clientBounds)
{
if (direction == Direction.Right)
{
//is invader 3 px from the right edge?
//if yes: then drop
//else keep on truckin' to the right!
if (position.X >= (clientBounds.Width - (Image.Width + 3)))
{
//position.X = 0;
position.Y += speed.X;
direction = Direction.Down;
}
else
{
position.X += speed.X; //Speed
}
}
else if (direction == Direction.Down)
{
speed.X *= -1;
position.X += speed.X;
}
}
}
}
Метод