我在form上画一个球的运动,就是使用timer画这个球的运动轨迹。但是如果我要画多个球体的运动轨迹呢?
是否是在timer中来一次循环,将每个球的运动轨迹都描述一下?如果是这样的话,那么几个还好,几十个,几百个绝对出问题,CPU都受不了。请问,有没有什么好点的办法,让我的界面上可以画出很多很多的球在运动(考虑碰撞)?
是否是在timer中来一次循环,将每个球的运动轨迹都描述一下?如果是这样的话,那么几个还好,几十个,几百个绝对出问题,CPU都受不了。请问,有没有什么好点的办法,让我的界面上可以画出很多很多的球在运动(考虑碰撞)?
是这样。
int lastTick;
void timer1_Tick(object sender, EventArgs e)
{
int elasped = Environment.TickCount - lastTick;
lastTick = Environment.TickCount; foreach( Ball ball in balls)
{
ball.Position += ball.Direction * elapsed / 1000.0f;
}
CollisionDetection();
Invalidate();
}
如果碰撞判断算法作的好的话,不说几百个,成千上万都没问题。