Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 05:04

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 2D Animationen
BeitragVerfasst: Di Jul 13, 2004 11:39 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Hi,

ich baue mir momentan nen eigenes desktop system mit der Graphics32 Lib.
Hab nen Wallpaper und 2 Rahmen Oben und Unten.
Nun wollte ich am anfang wenn alles geladen ist, das der Rahmen oben von -27 bis 0 ypos einscrolled + Alphablend von 0-255.
Das gleiche auch für unten 741-768 ypos.

Hab mir darauf erstmal nen beispiel app gebaut, also Neues Delphi Projekt.
ClientWidth und Height auf 640x480.
Dann Panel 640x27 auf left,top 0,-27.
und zu letzt nen Button.
Jetzt will ich das wenn ich auf den Button Klick das Panel runterfährt in 1 Sekunde.
Also soll in einer 1 Sekunde die Top pos bei 0 liegen.
Es soll aber flüssig wirken und nicht ruckelnd.

Hab mir darauf ne AnimationsThread klasse gemacht, welches das umsetzt.

Code:
  1.  
  2. procedure TAniThread.Execute;
  3. begin
  4.   while (not Terminated) do
  5.   begin
  6.     if (GetTickCount < FEndTime+1) then
  7.     begin
  8.       FVal := FTime - (FEndTime - GetTickCount);
  9.       Synchronize(Sync);
  10.     end
  11.     else
  12.       Suspend;
  13.   end;
  14. end;
  15.  
  16. constructor TAniThread.Create(CreateSuspended : Boolean);
  17. begin
  18.   inherited;
  19. end;
  20.  
  21. procedure TAniThread.Start(_Time : Integer);
  22. begin
  23.   FVal := 0;
  24.   FTime := _Time;
  25.   FStartTime := GetTickCount;
  26.   FEndTime := FStartTime + _Time;
  27.   Resume;
  28. end;
  29.  


Das funzt in dem testapp absolut wunderbar siehe hier: http://www.xenorate.com/final/development/Anitest.zip

Sobald ich das ganze aber in mein Deskapp einbaue, dann spackt alles rum :(
Ruckelt ohne ende, oder die app freezed solange bis die threads gelaufen sind :(
Ich denke mal es ist ein Problem in GR32 aber ich hab kei ahnung wo, also leute mit GR32 erfahrung können mir eher helfen.

Hier das desk app: http://www.xenorate.com/final/development/Desk.zip


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 14, 2004 11:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Das ist denke ich wirklich ein GR32 Problem,
aber so richtig blicke ich in deinem Code nicht durch :wink:
Bei mir läuft das ganze vielleicht so mit 1/2 fps ab,
das ist jedoch wirklich etwas langsam. Aber so richtig blicke ich nicht wo da die Routine ist wo du irgendwie die Position des Layers veränderst oder was Zeichnest... :?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 14, 2004 14:36 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Also kurze erklärung: OnCreate werden die grafiken aus den bitmaps geladen und die animationsthread gestartet.
Jede Klasse TXShape, TXWallpaper hat ne render routine, diese wird da einmal aufgerufen.

In der Procedure UpdateAnimation von TXShape wird die Layer Position und Alpha gesetzt, wenn Animations Threads aktiv sind.
Gerendert wird da nix, nur angepasst mit TXShape.Update.

Ich das gefühl das Threads mir irgendwie das GR32 output freezed, besser gesagt die ganze app :(


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]