Я делаю программу, в которой таймер1 должен активировать другой таймер2, а затем останавливаться, в таймере2 снова активировать таймер1 и останавливать таймер2, и поэтому он продолжается, а затем у меня есть текстовый журнал, где он напишите прогресс вниз. И вот проблема: сначала начинается с 2 таймера Timer1, а затем 2 таймера 2, затем он умножается на 2, поэтому его 4 следующий раз тогда 8, затем 16 и так далее, и я просто хочу, чтобы это было 1 таймер1, чем 1 таймер2 то его начинается снова, я не вижу, что случилось.Timer Отметьте больше, чем 1 раз сразу
private void buttonStart_Click(object sender, EventArgs e)
{
buttonStart.Enabled = false;
buttonStop.Enabled = true;
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Interval = (1000);
timer1.Enabled = true;
timer1.Start();
}
private void buttonStop_Click(object sender, EventArgs e)
{
buttonStart.Enabled = true;
buttonStop.Enabled = false;
timer1.Stop();
timer2.Stop();
}
private void LogWrite(string txt)
{
textBoxCombatLog.AppendText(txt + Environment.NewLine);
textBoxCombatLog.SelectionStart = textBoxCombatLog.Text.Length;
}
private void timer1_Tick(object sender, EventArgs e)
{
LogWrite(TimeDate + "player hit");
timer1.Stop();
timer2.Tick += new EventHandler(timer2_Tick);
timer2.Interval = (1000);
timer2.Enabled = true;
timer2.Start();
}
private void timer2_Tick(object sender, EventArgs e)
{
LogWrite(TimeDate + "mob hit");
timer2.Stop();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Interval = (1000);
timer1.Enabled = true;
timer1.Start();
}
Вы должны делать только эти строки timer2.Tick + = новый EventHandler (timer2_Tick); один раз и только один раз (так что удалите их с кнопки, нажмите на загрузку/инициализацию вашей формы. – rene
Возможно, вам захочется взглянуть на [это] (http://stackoverflow.com/questions/16605726/how-to-make -timer-keep-runing-while-loop-wait-for-another-time-result/16606866 # 16606866) ответят на аналогичный вопрос о том, почему обычные таймеры обычно не используются в играх. – nvoigt
Если Interval() для обоих всегда будет одним и тем же, а затем просто используйте один таймер и переключите логическое значение, чтобы указать, кто в данный момент атакует ... –