Для создания любой анимации необходимо ввести компонент Timer по обычной схеме: на панели инструментов Toolbox щёлкаем строку Timer (рис. 2.3); щёлкаем на форме. Ниже Form1 появляется значок с надписью Timer1 (рис. 2.9), который можно захватить мышью и перенести в другое место. Напомним, что в отличие от элементов управления компоненты располагаются вне формы и поэтому на форме в режиме выполнения не видны. В панели Properties с заголовком timer1 в свойстве Enabled вместо False выбираем True (рис. 2.10), а в свойстве Interval вместо заданных по умолчанию 100 миллисекунд задаём, например, значение 500 миллисекунд (напомним, что 1000 миллисекунд равны 1 секунде). Естественно, эти установки можно выполнить не только в панели Properties, но и в программе, например, при помощи такого кода.
Листинг 2.2.
Метод для включения таймера и задания интервала времени.Текст программы опубликован в предыдущем Издании данной книги.
Теперь в режиме выполнения проекта с интервалом в эти 500 миллисекунд (или 0,5 секунды) будет генерироваться запрограммированное нами событие Tick и выполняться при помощи метода Timer1_Tick (см. ниже листинг 2.3), а именно, в данной главе будет мигать заголовок формы.
Рис. 2.9.
Значок для компонента Timer.Рис. 2.10.
Панель Properties.Следовательно, мы закончили визуальную разработку анимационного эффекта, и нам необходимо написать код программы. Для этого дважды щёлкаем значок для компонента Timer (рис. 2.9). Появляется файл Form1.vb с автоматически сгенерированным шаблоном метода, который после записи нашего кода принимает вид листинга 2.3.
Листинг 2.3.
Метод для создания мигающего заголовка.Текст программы опубликован в предыдущем Издании данной книги.
Подробные пояснения к этому коду, а также другие варианты подобного кода даны в наших книгах [Литература].
Строим программу и запускаем на выполнение обычным образом: Build, Build Selection; Debug, Start Without Debugging. В ответ Visual Basic выполняет программу и выводит форму в режиме выполнения. На этой форме с заданной нами частотой в 500 миллисекунд (или 0,5 секунды) заголовок “Калькулятор (Calculator)” сменяется на “Калькулятор с анимацией (Calculator with animation)” (рис. 2.11), и таким образом создаётся эффект анимации.
Если на листинге 2.3 вместо слова "Калькулятор (Calculator)" записать оператор "" (т.е. удалить слово "Калькулятор (Calculator)"), то будет появляться и исчезать только второй заголовок формы "Калькулятор с анимацией (Calculator with animation)", и этот заголовок будет только мигать (без замены текста) с заданной частотой. Далее на этом калькуляторе можно выполнять описанные выше расчёты (рис. 2.11).
Рис. 2.11.
Аналогично создаётся анимация по другим вариантам, приведённым в наших книгах [Литература].
Следовательно, мы закончили разработку методики создания анимации на примере анимационного заголовка формы.
Подчеркнем, что мы разработали именно общую методику создания анимации
, так как если на листинге 2.3 вместо ключевого слова Me записать значение свойства Name для какого-нибудь элемента управления (Label1, Button1 и т.д.), то мы получим эффект анимации для этого элемента управления.Важно отметить, что на любой форме мы можем разместить несколько компонентов Timer (Таймер), каждый из которых будет создавать свой эффект анимации по разработанной в данной книге методологии.
2.8. Методика приостановки и возобновления анимации и мультипликации
В любом работающем приложении целесообразно предусмотреть возможность приостановки анимации и мультипликации (остановки изменения во времени какого-либо изображения), например, когда цель анимации достигнута, и она больше не нужна, а также предусмотреть возможность повторного запуска анимации, остановки, запуска и т.д. Можно разработать много вариантов прекращения анимации без прекращения работы всего приложения. Но все основные варианты основаны на том, что в методе для обработки какого-либо события в данном приложении вместо заданного выше значения True свойства Enabled мы должны записать значение False, например, при помощи следующей одной строки кода (которую мы уже применили в предыдущем листинге).
Листинг 2.4.
Строка кода, останавливающая анимацию.Текст программы опубликован в предыдущем Издании данной книги.
Недостаток записи только этой одной строки кода заключается в том, что после остановки анимации мы не сможем запустить её вновь. Чтобы возобновить анимацию, мы должны в обработчик события записать другую строку кода:
Листинг 2.5.
Строка кода, возобновляющая анимацию.Текст программы опубликован в предыдущем Издании данной книги.