Also ich hatte Anfangs auch Probleme damit, hab das aber dann so gelößt:
Zuerst mal die Klasse:
Delphi-Quellcode:
TPartSys = class(TAdParticleSystem)
private
FEmissionTime: Double;
FGap: Double;
FX: Double;
FY: Double;
procedure SetEmissionTime(const Value: Double);
procedure SetGap(const Value: Double);
procedure SetX(const Value: Double);
procedure SetY(const Value: Double);
public
procedure EmitParticles;
property Gap: Double read FGap write SetGap;
property EmissionTime: Double read FEmissionTime write SetEmissionTime; //= Lifetime
property X: Double read FX write SetX;
property Y: Double read FY write SetY;
end;
Das Laden:
Delphi-Quellcode:
PartSys := TPartSys.Create(AdDraw);
with PartSys do
begin
Texture := ImageList.Find('particle_target').Texture;
LoadFromFile(MyPath+'target.axp');
end;
Damit das mit der LifeTime auch geht (gibts nämlich nicht), hab ich das so gemacht (ist aus dem Editor rauskopiert
):
Delphi-Quellcode:
procedure TPartSys.EmitParticles;
Gap := Gap + CPUCounter.TimeGap; //CPUCounter: TAdPerformanceCounter
if Gap > EmissionTime then
begin
Emit(Round(Gap / EmissionTime), Round(X), Round(Y));
Gap := Gap - EmissionTime * Round(Gap / EmissionTime);
end;
Draw(AdDraw, 0, 0);
end;
Du musst nur in der Idle-Prozedur "PartSys.EmitParticles" aufrufen, und es müsste gehen.
MFG Benjamin