Компьютерная графика, мультимедиа и игры на Visual C#

       

Методика разработки приложений для выполнения расчетов с эффектами анимации


Листинг 2.1. Наш основной код с тремя переменными.

   double a, b, c;

   a = Convert.ToDouble(textBox1.Text);

   b = Convert.ToDouble(textBox2.Text);

   c = a + b;

   textBox3.Text = c.ToString();

Второй вариант – с двумя переменными:

   double a, b;

   a = Convert.ToDouble(textBox1.Text);

   b = Convert.ToDouble(textBox2.Text);

   textBox3.Text = (a + b).ToString();

Третий вариант – с одной переменной:

   double a;



   a = Convert.ToDouble(textBox1.Text);

   textBox3.Text = (a +

                Convert.ToDouble(textBox2.Text)).ToString();

Четвертый вариант – без использования переменных:

   textBox3.Text = (Convert.ToDouble(textBox1.Text) +

                Convert.ToDouble(textBox2.Text)).ToString();

Листинг 2.2. Метод для включения таймера и задания интервала времени.

private void InitializeTimer()

{

   //Включаем таймер:

   timer1.Enabled = true;

   //Генерируем событие Tick через каждый интервал времени,

   //равный значению свойства Interval:

   timer1.Interval = 500;

}

Листинг 2.3. Код для создания анимации. Вариант 1.

//Объявляем булеву переменную myText и присваиваем ей false:

bool myText = false;

private void timer1_Tick(object sender, EventArgs e)

{

     //Задаем чередование "Калькулятор(Calculator)" и

     //"Калькулятор с анимацией (Calculator with animation)":

     if (myText == false)

     {

         this.Text = "Калькулятор(Calculator)";

         //Изменяем значение myText на противоположное:

         myText = true;

     }

     else

     {

         this.Text = "Калькулятор с анимацией " +

                     "(Calculator with animation)";

         //Изменяем значение myText на противоположное:

         myText = false;

     }

}

Листинг 2.4. Код для создания анимации. Вариант 2.

//Объявляем счетчик (counter) числа интервалов

//и задаем его начальное значение:

private int counter = 0;

//Объявляем и задаем число интервалов N_Interval,

//после которого один текст сменяется другим:


private int N_Interval = 3;
private void timer1_Tick(object sender, EventArgs e)
{
      //Проверяем, значение счетчика counter
      // равно или еще нет числу интервалов N_Interval,
      //после которого один текст сменяется другим:
            if (counter >= N_Interval)
            {
                  //Если значение счетчика накопилось и равно
                  //N_Interval, то выводим другой текст:
                  this.Text = "Калькулятор(Calculator)";
                  //Значение счетчика counter снова обнуляем:
                  counter = 0;
            }
            else
            {
                  //Если значение счетчика еще не накопилось
                  //и не равно N_Interval,
                  //то выводим первый текст:
                  this.Text = "Калькулятор с анимацией " +
                              "(Calculator with animation)";
                  //Значение счетчика увеличиваем на 1:
                  counter = counter + 1;
            }
}
Листинг 2.5. Код для создания анимации. Вариант 3.
//Объявляем счетчик (counter) числа интервалов
//и задаем его начальное значение:
private int counter = 0;
//Объявляем и задаем число интервалов N_Interval,
//после которого один текст сменяется другим:
private int N_Interval = 3;
//Объявляем и обнуляем счетчик i_Interval_Stop,
//который считает число интервалов
//до остановки анимации:
private int i_Interval_Stop = 0;
//Объявляем и задаем число интервалов N_Interval_Stop,
//по достижении которого анимация прекращается:
private int N_Interval_Stop = 10;
private void timer1_Tick(object sender, EventArgs e)
{
      //Значение счетчика i_Interval_Stop,
      //который считает число интервалов
      //до остановки анимации, увеличиваем на 1:
      i_Interval_Stop = i_Interval_Stop + 1;
      //Проверяем число интервалов i_Interval_Stop,
      //по достижении которого анимация прекращается:
      if (i_Interval_Stop >= N_Interval_Stop)


                             timer1.Enabled = false;
      //Проверяем, значение счетчика counter
      // равно или еще нет числу интервалов N_Interval,
      //после которого один текст сменяется другим:
            if (counter >= N_Interval)
            {
                  //Если значение счетчика накопилось и равно
                  //N_Interval, то выводим другой текст:
                  this.Text = "Калькулятор (Calculator)";
                  //Значение счетчика counter снова обнуляем:
                  counter = 0;
            }
            else
            {
                  //Если значение счетчика еще не накопилось
                  //и не равно N_Interval,
                  //то выводим первый текст:
                  this.Text = "Калькулятор с анимацией " +
                              "(Calculator with animation)";
                  //Значение счетчика увеличиваем на 1:
                  counter = counter + 1;
            }
}
Листинг 2.6. Строка кода, останавливающая анимацию.
timer1.Enabled = false;
Недостаток записи только этой одной строки кода заключается в том, что после остановки анимации мы не сможем запустить ее вновь.
Чтобы возобновить анимацию, мы должны в обработчик события записать другую строку кода:
Листинг 2.7. Строка кода, возобновляющая анимацию.
timer1.Enabled = true;
Листинг 2.8. Код для приостановки и возобновления анимации.
//Объявляем булеву переменную OffOn и задаем ей false:
bool OffOn = false;
private void button2_Click(object sender, EventArgs e)
{
      //Задаем чередование остановки и возобновления анимации
      //после каждого щелчка кнопки button2:
      if (OffOn == false)
      {
            //Останавливаем анимацию:
            timer1.Enabled = false;
            //Изменяем значение OffOn на противоположное:
            OffOn = true;
      }
      else
      {
            //Возобновляем анимацию:
            timer1.Enabled = true;
            //Изменяем значение OffOn на противоположное:
            OffOn = false;
      }
}
Далее в шаблоне метода организовываем цикл по переменной i:
      i = i + 1;
      if (i <= N_Beep)
       Microsoft.VisualBasic.Interaction.Beep();

Содержание раздела