Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 1: Программирование на Visual C# искусственного интеллекта. Валерий Алексеевич Жарков

Читать онлайн.



Скачать книгу

text is replaced by another:

      if (counter> = N_Interval)

      {

      //If value of the counter collected and is equal

      //N_Interval, we output other text:

      this. Text = «Calculator»;

      //We nullify value of the counter again:

      counter = 0;

      }

      else

      {

      //If value of the counter did not collect yet

      //and N_Interval is not equal,

      //that we output the first text:

      this. Text = «Calculator with animation»;

      //We increase value of the counter on 1:

      counter = counter +1;

      }

      }

      Так как здесь мы впервые применили метод timer1_Tick, а далее постоянно будем его применять, то дадим краткие пояснения.

      Автоматически сгенерированный заголовок метода

      private void timer1_Tick (object sender, EventArgs e)

      говорит нам о том, что метод timer1_Tick обрабатывает (Handles) событие Tick, периодически (с заданным интервалом при помощи свойства Interval) возбуждаемое объектом (таймером) timer1. В строке (bool myText = false;) мы объявляем булеву глобальную переменную myText выше метода timer1_Tick. Если бы переменную myText мы задали в виде локальной переменной внутри метода timer1_Tick, то при каждом новом вызове (с заданным интервалом) этого метода timer1_Tick значение переменной myText оставалось бы неизменным, и анимации не получилось бы.

      По какому-либо одному варианту кода, например, по первому варианту строим программу и запускаем на выполнение обычным образом: Build, Build Selection; Debug, Start Without Debugging.

      В ответ Visual C# выполняет программу и на рабочий стол выводит форму в режиме выполнения. На этой форме с заданной нами частотой в 500 миллисекунд (или 0,5 секунды) заголовок «Калькулятор (Calculator) ” сменяется на «Калькулятор с анимацией (Calculator with animation) ” (рис. 2.10), и таким образом создаётся эффект анимации.

      Рис. 2.10. Форма с анимационным заголовком.

      Если на листингах 2.3 – 2.5 вместо слова «Калькулятор (Calculator)» записать оператор «» (т.е. удалить слово «Калькулятор (Calculator)»), то будет появляться и исчезать только второй заголовок формы «Калькулятор с анимацией (Calculator with animation)», и этот заголовок будет только мигать (без замены текста) с заданной частотой. Далее на этом калькуляторе можно выполнять описанные выше расчёты (рис. 2.10).

      Аналогично создаётся анимация по второму варианту (листинг 2.4) и третьему варианту (листинг 2.5); каждый вариант имеет свои особенности. И читатель может выбрать наиболее понравившийся вариант анимации. Мы же в дальнейшем будем применять, в основном, первый вариант, как наиболее простой.

      Следовательно, мы закончили разработку методики создания трёх вариантов анимации на примере анимационного заголовка формы. Подчеркнем, что мы разработали именно общую методику создания анимации, так как если в программах на листингах 2.3 – 2.5 вместо ключевого слова this записать значение свойства Name для какого-нибудь элемента управления (label1, button1 и т.д.), то мы получим эффект анимации для текста на этом элементе управления.

      2.8. Методика приостановки и возобновления анимации

      В любом работающем приложении целесообразно предусмотреть возможность приостановки анимации и мультипликации (остановки изменения во времени какого-либо изображения), например, когда цель анимации достигнута, и она больше не нужна, а также предусмотреть возможность повторного запуска анимации, остановки, запуска и т. д. Можно разработать много вариантов прекращения анимации без прекращения работы всего приложения. Но все основные варианты основаны на том, что в методе для обработки какого-либо события в данном приложении вместо заданного выше значения true свойства Enabled мы должны записать значение false, например, при помощи следующей одной строки кода (которую