Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ эффСкты». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 24

Автор Π’Π°Π»Π΅Ρ€ΠΈΠΉ Борисок

β€’ tfMSF – количСство ΠΌΠΈΠ½ΡƒΡ‚, сСкунд ΠΈ ΠΊΠ°Π΄Ρ€ΠΎΠ², Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ±Π°ΠΉΡ‚Π½ΠΎ, начиная с младшСго Π±Π°ΠΉΡ‚Π°, Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ Ρ†Π΅Π»ΠΎΠΌ. Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ Π±Π°ΠΉΡ‚ Π½Π΅ учитываСтся.

β€’ tfFrames – Ρ†Π΅Π»ΠΎΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ΅ число, содСрТащСС количСство ΠΊΠ°Π΄Ρ€ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ознакомились с основными свойствами ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° MediaPlayer, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ нСпосрСдствСнному ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π΅Π³ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ проигрываСтся Π·Π²ΡƒΠΊ (Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ WAV) (листинг 5.3).

...

Листинг 5.3.

ВоспроизвСдСниС Π·Π²ΡƒΠΊΠ° ΠΏΡ€ΠΈ создании Ρ„ΠΎΡ€ΠΌΡ‹ прилоТСния

//Ѐункция вызываСтся ΠΏΡ€ΠΈ создании Ρ„ΠΎΡ€ΠΌΡ‹

procedure TForm1.FormCreate(Sender: TObject);

begin

//Π‘ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

MyMediaPlayer.Visible := false;

//АвтоматичСски опрСдСляСм устройство воспроизвСдСния

MyMediaPlayer.DeviceType := dtAutoSelect;

//Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ„Π°ΠΉΠ» воспроизвСдСния

MyMediaPlayer.FileName := \'start.wav\

//ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ устройство

if not MyMediaPlayer.AutoOpen then MyMediaPlayer.Open;

//Воспроизводим Ρ„Π°ΠΉΠ»

MyMediaPlayer.Play;

end;

ΠŸΡ€ΠΈ создании Ρ„ΠΎΡ€ΠΌΡ‹ Forml воспроизводится Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Ρ„Π°ΠΉΠ» start. wav.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ записи) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… прямо Π² запускаСмом ΠΌΠΎΠ΄ΡƒΠ»Π΅ (Π•Π₯Π•-Ρ„Π°ΠΉΠ»Π΅). Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ прСдусматриваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π·Π²ΡƒΠΊΠ° Π² Ρ„Π°ΠΉΠ»Π°Ρ… рСсурсов (RES). На этапС сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ„Π°ΠΉΠ»Ρ‹ рСсурсов ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡŽΡ‚ΡΡ ΠΊ запускаСмому ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, Ρ‚Π΅ΠΌ самым увСличивая Ρ€Π°Π·ΠΌΠ΅Ρ€ модуля. Но количСство Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ. Π’Π°ΠΊ, Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ случаС для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (воспроизвСдСниС Π·Π²ΡƒΠΊΠ° ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Ρ„aΠΉΠ»start. wav. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт созданиС прилоТСния, запускаСмый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ рСсурсы, Π² нашСм случаС это Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Ρ„Π°ΠΉΠ».

Π’Π½Π°Ρ‡Π°Π»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» рСсурса, содСрТащий Π·Π²ΡƒΠΊΠΎΠ²ΡƒΡŽ запись. Для этого понадобится компилятор рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΊaΡ‚aΠ»oΠ³eBorland\ Delphi7\Bin\ ΠΈ носит имяЬгсс32. Π΅Ρ…Π΅. Π”Π°Π»Π΅Π΅ создаСм Ρ„Π°ΠΉΠ» рСсурса. ВсС рСсурсы (Π·Π½Π°Ρ‡ΠΊΠΈ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, изобраТСния, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ строк ΠΈ Ρ‚. ΠΏ.), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Π’Π°ΠΊΠΎΠ΅ описаниС ΠΈΠΌΠ΅Π΅Ρ‚ фиксированный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

...

<имя> <Ρ‚ΠΈΠΏ> <ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹> <имя Ρ„Π°ΠΉΠ»Π°>

Имя – это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя рСсурса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСсурсами. Имя Ρ„Π°ΠΉΠ»Π° – строка, содСрТащая ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ. Π’ нашСм случаС строка, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ рСсурс:

...

LOADSOUND RCDATA LOADONCALL start.wav

Π”Π°Π»Π΅Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС записываСмЬгсс32. Π΅Ρ…Π΅ source. re, Π³Π΄Π΅ source. re – тСкстовый Ρ„Π°ΠΉΠ», содСрТащий описаниС рСсурса.

ПослС компиляции ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» pecypcasource. RES. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. На этом этапС рСсурс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» рСсурса, пишСм Π² исходном тСкстС:

...

//ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ рСсурса

{$R SOURCE.RES}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» рСсурса ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΈ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π’Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ эти дСйствия, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (листинг 5.4).

...

Листинг 5.4.

ИспользованиС рСсурсов для хранСния Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… записСй

//Ѐункция, которая воспроизводит Π·Π²ΡƒΠΊ, находящийся Π² рСсурсС

procedure RetrieveLoadSound;

var

hResource : THandle;

pData : Pointer;

begin

//Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ„Π°ΠΉΠ» рСсурса ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π·Π²ΡƒΠΊ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ \'LOADSOUND\'

hResource := LoadResource( hInstance, FindResource(hInstance,

\'LOADSOUND\', RT_RCDATA));

try

//Находим адрСс Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ рСсурса

pData := LockResource(hResource);

if pData = nil then raise Exception.Create(\'Ошибка чтСния

рСсурса LOADSOUND\');

//Воспроизводим Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Ρ„Π°ΠΉΠ»

sndPlaySound(pData, SND_MEMORY);

finally

//ОсвобоТдаСм рСсурс

FreeResource(hResource);

end;

end;

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ RetrieveLoadSound понадобятся Π΄Π²Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: hResource (дСскриптор рСсурса) ΠΈ pData (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, располоТСниС рСсурса). ΠŸΠ΅Ρ€Π΅Π΄ использованиСм рСсурса производится Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° (функция LoadResource). Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‚ рСсурс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ (Π·Π²ΡƒΠΊ LOADSOUND), с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ FindResource ΠΈΡ‰Π΅ΠΌ Π΅Π³ΠΎ Π² рСсурсах, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊ этому экзСмпляру прилоТСния (hlnstance). Π”Π°Π»Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Ρ„Π°ΠΉΠ», ΠΈ записываСм Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ pData. Если рСсурс Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдаст сообщСниС ΠΎΠ± ошибкС.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sndPlaySound для воспроизвСдСния Π·Π²ΡƒΠΊΠ°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ SND_MEMORY Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ воспроизвСдСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΈΠ· памяти.

Ѐункция RetrieveLoadSound ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² любом мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для воспроизвСдСния start. wav. Π’ этом случаС Π΄Π°Π½Π½Ρ‹Π΅ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² запускаСмом ΠΌΠΎΠ΄ΡƒΠ»Π΅, увСличивая Π΅Π³ΠΎ объСм, Π½ΠΎ сокращая количСство Ρ„Π°ΠΉΠ»ΠΎΠ² прилоТСния. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ эффСктивСн ΠΏΡ€ΠΈ создании Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌΠΈ сопровоТдСниями.

Π’ ΠΊΠΎΠ½Ρ†Π΅ Π³Π»Π°Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описан процСсс создания ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ проигрыватСля, Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ построСна Π½Π° использовании ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° MediaPlayer. Π”Π°Π»Π΅Π΅ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Delphi – Animate, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ (Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π² Windows), Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ.

5.3. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Animate

Π’ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏ прСдставляСт собой Ρ„Π°ΠΉΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ AVI, содСрТащий ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ², ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… создаСтся эффСкт двиТСния. Наряду с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ AVI-Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π²ΡƒΠΊ. Для воспроизвСдСния Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² – Animate ΠΈΠ»ΠΈ MediaPLayer.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Animate позволяСт ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒ AVI-Ρ„Π°ΠΉΠ»Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π² Windows. AVI-Ρ„Π°ΠΉΠ»Ρ‹, воспроизводимыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ Animate, ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния:

β€’ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π²ΡƒΠΊΠ°;

β€’ информация Π² Π½ΠΈΡ… Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ сТатой;

β€’ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 64 ΠšΠ±Π°ΠΉΡ‚.

Для задания воспроизводимого Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ свойства FileName ΠΈ CommonAVI. Π’ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· этих свойств. ΠŸΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ AVI-Ρ„Π°ΠΉΠ», ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½Π° дискС, указываСтся ΠΏΡƒΡ‚Π΅ΠΌ задания свойства FileName, ΠΏΡ€ΠΈ этом свойству CommonAVI автоматичСски присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ aviNone. Бвойство CommonAVI позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· стандартных ΠΊΠ»ΠΈΠΏΠΎΠ² Windows ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

β€’ aviNone – отсутствиС стандартной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ;

β€’ aviCopyFile – ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°;

β€’ aviCopyFiles – ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²;

β€’ aviDeleteFileβ€”ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°;

β€’ aviEmptyRecycle – очистка ΠšΠΎΡ€Π·ΠΈΠ½Ρ‹;

β€’ aviFindComputer – поиск ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°;

β€’ aviFindFile – поиск Ρ„Π°ΠΉΠ»Π°;

β€’ aviFindFolder – поиск ΠΏΠ°ΠΏΠΊΠΈ;

β€’ aviRecycleFile – ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π² ΠšΠΎΡ€Π·ΠΈΠ½Ρƒ.

ΠŸΡ€ΠΈ присвоСнии свойству CommonAVI значСния, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ aviNone, свойство FileName автоматичСски сбрасываСтся, принимая Π² качСствС значСния ΠΏΡƒΡΡ‚ΡƒΡŽ строку.

Для задания Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ResHandle Ρ‚ΠΈΠΏΠ° THandle ΠΈ ResID Ρ‚ΠΈΠΏΠ° Integer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ свойствам CommonAVI ΠΈ FileName. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ResHandle Π·Π°Π΄Π°Π΅Ρ‚ ссылку Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ рСсурса, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства ResID Π² этом ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ рСсурса.

ПослС Π²Ρ‹Π±ΠΎΡ€Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ° свойства FrameCount, FrameHeight ΠΈ FrameWidth Ρ‚ΠΈΠΏΠ° Integer ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ»ΠΈΠΏΠ°: количСство, высоту ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠ°Π΄Ρ€ΠΎΠ² (Π² пиксСлах) соотвСтствСнно. Π­Ρ‚ΠΈ свойства ΡΠ²Π»ΡΡŽΡ‚ΡΡ свойствами Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Animate автоматичСски ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°Π΄Ρ€ΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ°, это опрСдСляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True свойства AutoSize. Если этому свойству ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ отсСчСниС части ΠΊΠ°Π΄Ρ€Π° изобраТСния, Ссли Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Animate.

ВоспроизвСдСниС Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ° начинаСтся ΠΏΡ€ΠΈ установкС свойству Active значСния True. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ воспроизвСдСния ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ соотвСтствСнно значСниями свойств StartFrame ΠΈ StopFrame Ρ‚ΠΈΠΏΠ° Small Int. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ StartFrame ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 1.

Бвойство Repetitions Ρ‚ΠΈΠΏΠ° Integer опрСдСляСт количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ воспроизвСдСния Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ. Π’ этом случаС Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏ проигрываСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° процСсс воспроизвСдСния Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ остановлСн.

Для запуска ΠΈ остановки воспроизвСдСния ΠΊΠ»ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Play, Stop ΠΈ Reset. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Play (FromFrame: Word, ToFrame: Word, Count: Integer) ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏ, начиная с ΠΊΠ°Π΄Ρ€Π°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ FromFrame, ΠΈ заканчивая ΠΊΠ°Π΄Ρ€ΠΎΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ToFrame. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Count опрСдСляСт количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° позволяСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ StartFrame, StopFrame ΠΈ Repetitions, задавая для Π½ΠΈΡ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ воспроизвСдСнии значСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ устанавливаСт свойству Active Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True.

Бвойство Open Ρ‚ΠΈΠΏΠ° Boolean доступно ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π³ΠΎΡ‚ΠΎΠ² Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Animate ΠΊ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ. Если Π²Ρ‹Π±ΠΎΡ€ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ° проходят ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ свойству Open автоматичСски устанавливаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ. ΠŸΡ€ΠΈ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ° это свойство ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False. ΠŸΡ€ΠΈ нСобходимости программист ΠΌΠΎΠΆΠ΅Ρ‚ сам ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ свойству Open Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False, Ρ‚Π΅ΠΌ самым ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Animate.