Delphi-Quellcode:
TObjectAnimator = class
private
FObj: TTheObject;
public
constructor Create(Obj: TTheObject);
procedure Animate();
end;
TObjectAnimatorHelper = class helper for TTheObject
public
function Animator: TTheObject;
end;
function TObjectAnimatorHelper.Animator: TTheObject;
begin
Result := ...;
end;
bezüglich der Speicherverwaltung;
- entweder TObjectAnimator als Interface
- eine globale Liste führen, wo alle Animatoren drin sind
- der Animator gibt sich selber frei, nachdem er verwendet wurde und man erstellt in
.Animator: TTheObject;
immer wieder einen Neuen (empfehle ich aber nicht)
- falls TTheObject von TComponent abgeleitet ist, dann könnt man dieses zum Owner von TObjectAnimator machen und beim Zugriff auf
.Animator: TTheObject;
wird entweder ein neuer Animator erstellt oder ein in TTheObject vorhandener TObjectAnimator genutzt
- oder man nutzt nur einen einzigen globalen TObjectAnimator, der von
.Animator: TTheObject;
zurückgegeben wird ... vor dessen Rausgabe wird dem TObjectAnimator noch gesagt, für welches TTheObject er als nächstes verantwortlich ist (hier muß man aber aufpassen, daß nicht mehrere Animatoren gleichzeitig aufgerufen werden, aber wenn man in dem Animator eine Verschachtelung nicht zuläßt, dann wäre es noch relativ ungefährlich)