Andorra 2d Tutorial Teil 3 [gelöst]

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Noobmaster
Beiträge: 7
Registriert: So 18. Jul 2010, 20:02

Andorra 2d Tutorial Teil 3 [gelöst]

Beitrag von Noobmaster »

Hallo Leute!
Wie ihr vielleicht schon festgestellt habt, lerne ich gerade, Andorra 2d zu benutzen. Die ersten beiden Tutorials haben auch ganz gut geklappt. Im dritten Teil hänge ich jedoch fest.
Mein Compiler meldet, dass FDraw.RegisterNotifyEvent(Notify) in "AdPixelTest.pas" mit einer falschen Anzahl an Parametern aufgerufen wurde, was ich mir allerdings nicht erklären kann.
Danke im Vorraus für eure Hilfe!

Code: Alles auswählen

unit Unit1;
 
{$MODE DELPHI}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, AdDraws, AdClasses,
  AdTypes,AdSetupDlg,AdComponents,Windows,AdPerformanceCounter,AdSprites;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { private declarations }
  public
  procedure Idle(Sender: TObject; var Done:boolean);
  procedure SetLine;
  AdDraw : TAdDraw;
  AdImageList : TAdImageList;
  AdTimer : TAdPerformanceCounter;
  AdSpriteEngine : TSpriteEngine;
    { public declarations }
  end;
 
 //Klasse: TFigur
  TFigur = class(TImageSprite)
  private
  protected
    procedure DoMove(TimeGap:double);override;
  public
    XSpeed:integer;
    constructor Create(AParent:TSprite);override;
    procedure SetLine;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer; //Schleifenvariable
begin
  //Timer:
  AdTimer := TAdPerformanceCounter.Create;
  //Oberfläche erstellen:
  AdDraw := TAdDraw.Create(self);
  AdDraw.DllName := 'AndorraOGLLaz.dll';
  if AdDraw.Initialize then
  begin
    Application.OnIdle := Idle;
 
    //AdImageList
    AdImageList := TAdImageList.Create(AdDraw);
    with AdImageList.Add('Figur') do //Zu der Liste wird ein Bild mit dem Namen "bild" hinzugefügt.
    begin
     Texture.LoadGraphicFromFile('Bilder/boy.bmp',true,clFuchsia); // Dieses mal laden wir das Bild transparent herein
     PatternWidth := 96;
     PatternHeight := 96;
    end;
    AdImageList.Restore;
 
    //Erzeugen der Spriteengine:
    AdSpriteEngine := TSpriteEngine.Create(nil);
    AdSpriteEngine.Surface := AdDraw;
    //Instanzen von TImageSprite erstellen
    Randomize;
    for i:=1 to 6 do
    begin
         with TFigur.Create(TAdSpriteEngine) do
         begin
              Image := AdImageList.Find('Figur');
          AnimActive := true;
          AnimLoop := true;
          XSpeed := -(random(100)+50);
          AnimSpeed := Abs(XSpeed / 7.5);
         SetLine; //YPosition der Figur setzen und XSpeed umkehren(s.Funktion)
         end;
    end;
  end //wenn AdDraw Initialisierung fehlschlägt:
  else
  begin
    ShowMessage(AdDraw.GetLastError);
    halt;
  end;
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  AdImageList.Free;
  AdTimer.Free;
  AdDraw.Free;
  AdSpriteEngine.Free;
end;
 
procedure TForm1.Idle(Sender: TObject; var Done:boolean);
begin
  //Timer:
  AdTimer.Calculate;
  Caption := 'FPS:'+inttostr(AdTimer.FPS);
 
  AdDraw.ClearSurface(0);
  AdDraw.BeginScene;
 
  //Die Animation:
  AdSpriteEngine.Move(AdPerCounter.TimeGap / 1000);
  AdSpriteEngine.Draw;
  AdSpriteEngine.Dead;
  //Ende der Animation
  //
  AdDraw.EndScene;
  AdDraw.Flip;
  Done := false;
end;
 
{TFigur}
 
constructor TFigur.Create(AParent: TSprite);
begin
inherited;
X := 0;
Y := 0;
XSpeed := -150;
end;
 
procedure TFigur.DoMove(TimeGap: double);
begin
inherited;
          X := X + XSpeed*TimeGap;
          if ((X > Engine.SurfaceRect.Right) and (XSpeed > 0)) or
             ((X < -96) and (XSpeed < 0)) then
      begin
         SetLine;
      end;
end;
 
procedure TFigur.SetLine;
begin
     XSpeed := -XSpeed;
     if XSpeed > 0 then
     begin
          AnimStart := 0;
          AnimStop := 7;
          X := -96;
     end
     else
     begin
          AnimStart := 8;
          AnimStop := 15;
          X := Engine.SurfaceRect.Right+96;
     end;
     Y := Random(round(Engine.SurfaceRect.Right-96));
end;
 
initialization
  {$I Unit1.lrs}
 
end.
Zuletzt geändert von monta am Fr 30. Jul 2010, 12:47, insgesamt 2-mal geändert.
Grund: Highlighter

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Andorra 2d Tutorial Teil 3

Beitrag von Teekeks »

Ich denke das du hier bleiben solltest, da der Entwickler von Andorra 2d (igel457) dir dort auch schon geantwortet hat und somit schon an dem Thema dran ist.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Andorra 2d Tutorial Teil 3

Beitrag von pluto »

ps: Sowas fällt mir auch immer wieder auf: Cross Posting. Erst letzten Viel mir das bei der DP auf. Zuerst wird dort gefragt und dann hier... Ohne ein entsprechenden Verweis. Dann wäre es inordnung.
MFG
Michael Springwald

Noobmaster
Beiträge: 7
Registriert: So 18. Jul 2010, 20:02

Re: Andorra 2d Tutorial Teil 3

Beitrag von Noobmaster »

Sry, ich wusste nicht, dass das verboten ist. Mir ist halt nur aufgefallen, dass unterschiedliche Antworten auftauchen, die eben unterschiedlich nützlich sind...
Mittlerweile wurde ich übrigens von igel angeschrieben und er ist dabei das Problem von mir zu lösen.
Inwiefern soll ich denn so einen Verweis anlegen?

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Andorra 2d Tutorial Teil 3

Beitrag von Teekeks »

Einfach einen Hinweis, dass auch noch in einem anderen Forum darum Diskutiert wird und ein Link dann zu dieser Seite (aka "Crosspost zur Delphi-PRAXiS").

Noobmaster
Beiträge: 7
Registriert: So 18. Jul 2010, 20:02

Re: Andorra 2d Tutorial Teil 3

Beitrag von Noobmaster »

Okay, danke. Dann würde ich mal sagen, dass hiermit alles erledigt wäre:
Das Thema wird außerdem auf Delphipraxis.net behandelt: http://www.delphipraxis.net/153164-ando ... l-3-a.html
Zuletzt geändert von Noobmaster am Mo 26. Jul 2010, 18:16, insgesamt 1-mal geändert.

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Andorra 2d Tutorial Teil 3

Beitrag von Teekeks »

Und wenn du das hinter der # weg lässt (Inclusive der #) kommt man auch gleich zum ersten Beitrag. :)

Noobmaster
Beiträge: 7
Registriert: So 18. Jul 2010, 20:02

Re: Andorra 2d Tutorial Teil 3

Beitrag von Noobmaster »

Ach, das Internet ist doch kompliziert :-D, Danke, ist schon verbessert ;-)

Antworten