100 Delphi компонента - Animate
Сега нека разгледаме как да възпроизвеждаме стандартни Windows анимации и.aviфайлове, които са клипове без звук, в приложение на Delphi. Това ви позволява да направите компонентAnimate, разположен в страницата Win32 на библиотеката.
Отворете ново приложение, плъзнете компонентаAnimateвъв формуляра и го опознайте.
Изображението, което възпроизвежда, се определя от едно от двете свойства:FileNameилиCommonAVI. Първото от тези свойства, както подсказва името му, ви позволява да зададете името на файла, който да се възпроизвежда по време на процеса на проектиране или програмно. И свойствотоCommonAVIви позволява да възпроизвеждате стандартни анимации на Windows. Това свойство се декларира, както следва:
ТипътTCommonAVIдефинира много анимации, предварително дефинирани в Windows, като копиране на файлове, търсене на файлове, изтриване на файлове и т.н. Какво означава всяка стойност ще видите от тестовото приложение, което ще изградите малко по-късно.
Засега задайте стойносттаCommonAVIна, например,aviCopyFile. Това съответства на стандартното изображение за копиране на файл. Съответният първоначален чертеж незабавно ще се появи на вашия формуляр. СвойствотоRepetitionsна компонентаAnimateзадава броя повторения на клипа. Ако е0(стойността по подразбиране), възпроизвеждането се повтаря отново и отново, докато се изпълни методътСтоп. Когато този метод се изпълни, се генерира събитиетоOnStop, което може да се използва, например, за да изтриете изображението - да го направите невидимо.
Ако свойствотоПовторенияе зададено на стойност, по-голяма от нула, то определя броя на повторенията на клипа. Задайте го на например3. Сега задайте свойствотоActiveна компонентаAnimateнавярно. Ще видите (Фигура 4.21), че вашето приложение ще работи по време на процеса на проектиране. Изображението ще оживее и клипът ще се повтори 3 пъти.
Фиг. 4.21Анимация за копиране на файл |
Можете да видите възпроизвежданото изображение кадър по кадър. За да направите това, щракнете с десния бутон върху компонента и изберете секциите Next Frame (следващ кадър) или Previous Frame (предишен кадър) от изскачащото меню. Това ще ви позволи да изберете част от клипа, ако не искате да пуснете целия клип. Можете да възпроизведете фрагмент от клип, като зададете съответните стойности на свойстватаStartFrame- началният кадър на възпроизвеждане иStopFrame- последният кадър на възпроизвеждане.
Можете също така да възпроизведете фрагмент от клип, като използвате методаВъзпроизвеждане, който се дефинира по следния начин:
Методът възпроизвежда определената последователност от клип кадри отFromFrameдоToFrameвключително и възпроизвеждането се повтаряCountпъти. АкоFromFrame = 1, възпроизвеждането започва от първия кадър. Стойността наToFrameтрябва да е по-голяма или равна наFromFrameи по-голяма от стойността, определена от свойствотоFrameCount(свойство само за четене), което показва общия брой кадри в клипа. АкоCount = 0, тогава възпроизвеждането се повтаря, докато се изпълни методътStop.
Изпълнението наPlayе идентично с настройването наStartFrameнаFromFrame,StopFrameнаToFrame,RepetitionsнаCountи след това наActiveнаtrue.
КомпонентътAnimateпредоставя събитиятаOnClose,OnOpen,OnStartиOnStop, генерирани съответно в моментите на затваряне и отваряне на компонента, начало и крайвъзпроизвеждане.
А сега добавете 3 бутона към приложението (фиг. 4.22). Първият (наречете гоВWind) ще започне процеса на възпроизвеждане на всички стандартни Windows клипове един по един. Вторият бутон (наречете гоBStop) му позволява да завърши възпроизвеждането на следващия клип. И третият бутон (именувайте гоBFile) ще бъде въведен, за да покаже, че компонентът може да възпроизвежда изображения от дадения файл.avi. За да позволите на потребителя да избере файл с изображение, добавете компонентOpenDialogкъм формуляра (вижте раздел 8.2) и задайте неговия филтър (свойствоFilter) на
Сега всички приготовления са завършени и остава само да напишем манипулатори на събития. Кодът на манипулатора може да изглежда така:
Фиг. 4.22Демонстриране на възможностите на компонентаAnimate |
Манипулаторът на събитиеOnClickна бутонаBWindзадава първоначалната стойност на свойствотоCommonAVI, нулира брояча на1, прави компонентаAnimate1видим и го активира.
Манипулаторът на събитиеOnClickна бутонаBStopспира възпроизвеждането чрез методаStop.
Манипулаторът на събитиеOnStopна компонентаAnimate1увеличава брояча с1в зависимост от стойността на брояча, зарежда съответния Windows клип в компонента и активира компонента. Ако всички клипове вече са възпроизведени, тогава компонентът става невидим.