Einzelnen Beitrag anzeigen

Benutzerbild von bigben37
bigben37

Registriert seit: 19. Dez 2007
Ort: Freiburg
116 Beiträge
 
Delphi 2009 Professional
 
#820

Re: Andorra 2D [Ver. 0.45, 24.12.08]

  Alt 27. Dez 2008, 18:42
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
Benjamin
Optimismus ist nur ein Mangel an Information
  Mit Zitat antworten Zitat