我想在3秒内实时填充一个矩形
我希望增量是一个常数值,看起来不错,没有加速度
而且我无法理解要做什么
这是我的代码
// constant
// 1.0f = 100% of rectangle, 3 sec = 3000.0 miliseconds
float addValue = 1.0f/3000.0f;
public override void Update(GameTime gameTime)
{
newGameTime += gameTime.ElapsedGameTime.Milliseconds;
// once the percentage is set to 0 this starts
if ((percentage < 1))
{
// calculate value here in order to time
percentage += addValue;
}
}
我一直在尝试各种疯狂的数学运算,但我完全失去了它。 :( 我知道我应该使用gameTime或newGameTime但是我迷路了
答案 0 :(得分:2)
我认为这是你的更新/渲染功能。
例如,假设自上次渲染以来已经过了300ms。这意味着您必须在矩形中添加100%/ 3000ms * 300ms = 10%。
- &GT;您错过了计算中的已用时间:
percentage += addValue * gameTime.ElapsedGameTime.Milliseconds;
答案 1 :(得分:0)
根据ccKep在评论中提到的内容,我对这个答案可能完全错了。
但是为了防止你正在寻找的东西,我把它放在一起。
主要思想是有一个控制增量的计时器事件。即使我提交的代码不合适,也许这个想法会适用。
public int percentage;
public int Percentage
{
get { return percentage; }
set
{
percentage = value;
if (Percentage >= 0 && Percentage < 100)
{
progressBar1.Value = value;
}
else
{
Percentage = 0;
timer1.Stop();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Percentage = 0;
timer1.Interval = 1000;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
double addValue = 100 / 3;
Percentage += (int)addValue;
}