I have this code:
public class Area
{
Texture2D point;
Rectangle rect;
SpriteBatch _sB;
GameTimer _gt;
int xo, yo, xt, yt;
//List<Card> _cards;
public Area(Texture2D point, SpriteBatch sB)
{
this.point = point;
this._sB = sB;
xt = 660;
yt = 180;
xo = 260;
yo = 90;
}
public void Draw(SpriteBatch spriteBatch)
{
rect = new Rectangle(660, 180, 80, 120);
spriteBatch.Draw(point, rect, Color.White);
_gt = new GameTimer();
_gt.UpdateInterval = TimeSpan.FromSeconds(0.1);
_gt.Draw += OnDraw;
}
private void OnDraw(object sender, GameTimerEventArgs e)
{
this.pass(xo, yo);
if (xo != xt) xo += (xt > xo) ? 10 : -10;
if (yo != yt) yo += (yt > yo) ? 10 : -10;
}
public void pass(int x, int y)
{
rect = new Rectangle(x, y, 80, 120);
_sB.Draw(point, rect, Color.Black);
}
}
So, I can’t understand what’s wrong. And It’s my first project with XNA, and because of it there can be stupid mistake 🙂
P.S. Sorry. There is a rectangle with coordinates (xt,yt), and I need the animation to move the rectangle to (xo,yo)
P.P.S. I added the full class with corrections, because I don’t understand my mistake.
You are drawing the entire animation in one frame.. .you should call Pass with diferent x,y from OnDraw…
EDITED:
1) You don’t need the timer, the draw method in game class is by default called 60 frames per second…
2) The Seconds parameter should be calculated as (float) gametime.ElapsedTime.TotalSeconds;
As you should know this animation will move in a rough mode… if you want to move your sprite smoothly… you can use a Vector2 for your positions and a float for your speed;