366______________________________________________Глава 5

Процедура BRunClick не отличается от той, что была в первом приложении.
Процедура TimerlTimer, как и в первом приложении начинается и кончается вы-
зовами Draw, первый из которых стирает изображение предыдущего кадра, а вто-
рой — рисует новый кадр. После первого вызова Draw рассчитывается значение
переменной cadr оператором

cadr = (cadr+1) % Ncadr;

Поскольку тут используется операция вычисления остатка от деления cadr+1
на Ncadr, то значение cadr последовательно получает значения О, 1, 2, ..., Ncadr
— 1, 0, 1, ... . Шаг начинается с cadr = 0. При этом проверяется, не приблизился
ли человечек к краю формы, и если приблизился — изменяется направление дви-
жения (знак переменной revers).

Наиболее серьезно изменилась процедура Draw. Она начинается с определе-
ния угла наклона ног и рук Angi, исходя из номера кадра:

float Angi = Pi/4*(1+(2.*cadr)/(Ncadr-1));

Обратите внимание на то, что константа 2 в этом выражении записана с точ-
кой и произведение 2.*cadr заключено в скобки. Это принципиально, так как в
этом случае константа воспринимается как значение с плавающей запятой и все
выражение (2.*cadr)/(Ncadr-l) вычисляется как значение с плавающей запятой.
Если не поставить точку после 2, то будут применяться целочисленные вычисле-
ния и пока 2*cadr меньше, чем Ncadr-1, значения этого выражения будут равны
и угол изменяться не будет.

После вычисления угла на его основе строится изображение, подобное том
которое было в первом приложении. Обратите внимание на то, что вторая ног;;

вторая рука человечка рисуются только, если выполняется условие cadr '
Ncadr/2-l. Это связано с тем, что, если число кадров Ncadr четное, то в этот У.
мент одна нога накладывается на другую и руки также накладываются друг i;,.
друга. Поскольку рисование идет в режиме pmNotXor, то это наложение приведет |
к тому, что у человечка вообще исчезнут в этом кадре руки и ноги. Правда, всего "
на один кадр, но все равно неприятно.

Ваше приложение готово. Можете сохранить его и выполнить. Вы увидите, »
что движения человечка стали плавными.                                   |

5.2.3 Воспроизведение немых видео клипов —
компонент Animate

Теперь рассмотрим способ воспроизведения в приложении C+4-Builder стан-
дартных мультипликаций Windows и файлов .avi — клипов без звукового сопро-
вождения. Это позволяет сделать компонент Animate, расположенный на страни-
це Win32 библиотеки.

Компонент Animate позволяет воспроизводить на форме стандартные видео
клипы Windows (типа копирования файлов, поиска файлов и т.п.) и немые видео
файлы .avi — Audio Video Interleaved. Эти файлы представляют собой последова-
тельность кадров битовых матриц. Они могут содержать и звуковую дорожку, но
компонент Animate воспроизводит только немые клипы AVI. Он работает только с
неуплотненными файлами AVI или с клипами AVI, уплотненными с использова-
нием RLE — run-length encoding.

TAnimate может воспроизводить клипы AVI из ресурсов, из файлов или из
библиотеки Shell32.dll, если приложение работает с Windows 95 или NT.

Откройте новое приложение, перенесите на форму компонент Animate и по-
знакомьтесь с ним.

Воспроизводимое им изображение задается одним из двух свойств: FileName
или CommonAVI. Первое из этих свойств, как ясно из его названия, позволяет в