hi!
du willst also bewegte menus mit directx erstellen. ich hatte vor etwa einem jahr mit directx zu tun, bin dann aber aufgrund schlechter erfahrungen dann auf opengl umgestiegen. dennoch dürfte sich das prinzip nicht sehr unterscheiden. nehmen wir mal an, du hast ein menupunkt, aus dem ein flyout kommen soll. dann würde ich empfehlen, einen record für den menupunkt zu erstellen. der könnte zum beispiel so aussehen:
Quelltext
1: 2: 3: 4: 5:
| type TDXMenu = record Position: single; MovingStatus: (idle, open, close); Speed: single; end; |
mit diesem record solltest du zurecht kommen. Position gibt an, wo sich das flyout gerade befindet, MovingStatus ob sich das menu bewegt (keine veränderung, öffnen, schließen) und Speed die geschwindigkeit, mit der es geöffnet / geschlossen wird.
mit dieser variante brauchst du den timer nicht jeweils aktivieren und deaktivieren. du brauchst nur noch die zeit messen, die von einem frame zum anderen vergeht, damit das menu nicht auf einem schnellen rechner schnell rausfährt und auf einem langsamen langsam.
in groben zügen würde das herausfahren zum beispiel so aussehen:
menupunkt.Position := menupunkt.Position + menupunkt.Speed * [verstrichene Zeit];
ich hoffe, es hilft dir ein bisschen weiten.
CU, Logiqu!