HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Kép animáció futtatása külön szálon


Példaprogram letöltése

6264 bájt

A mellékelt példában egy olyan komponenst készítünk, amelynek folyamatosan változik a képe úgy, hogy a kép előállítását végző programrész külön szálon fut.
A mellékelt példaprogram megnyitása előtt a Ball.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A komponens amit készítünk tulajdonképpen nem használható semmire, csak a bevezetőben említett technikát mutatja be. A komponens területén egy piros "labda" pattog, amelynek sebességét a Speed property-n keresztül szabályozhatjuk.
A komponens képének előállítását egy külön szál végzi el, ezért szükség lesz egy új osztályra, amit a TThread osztályból származtatunk. Az új osztály neve TBallThread lesz. A komponensben létrehozunk egy ilyen típusú objektumot (FThread). Mivel a TBallThread osztályból el kell érnünk a TBall komponens Canvas-át, ezért ebben egy TBall típusú objektumot kell létrehoznunk, aminek az osztály Create konstruktorában adunk értéket (FBall).
Az FThread osztályból származtatott osztályokban az Execute eljárást kell felülírnunk. Ebben egy ciklust készítünk, amely a Terminated property értékét folyamatosan figyeli, és csak addig fut, amíg ez igaz értéket nem kap. Ebben a ciklusban számoljuk ki a "labda" aktuális pozícióját és irányát, majd a Synchronize eljárás használatával meghívjuk a DrawBall eljárást. A Synchronize biztosítja számunkra, hogy egyszerre csak egy szál férjen hozzá a VCL komponenshez, így azok nem "akadhatnak" össze. A DrawBall eljárásban elkészítjük a komponens aktuális képét az FBitmap objektumban, majd ezt rámásoljuk az FBall objektum Canvas-ára, ezzel megjelenítve a képet a komponensben. Miután a DrawBall eljárás lefutott a Sleep metódussal várakozunk a Speed property-ben meghatározott ideig.
procedure TBallThread.Execute;
begin
  while not Terminated do begin
...
    Synchronize(DrawBall);
    Sleep(FBall.Speed);
  end;
end;

Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 409. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |