![]() |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Danke ! Dann werde ich gleich mal DevlL ausprobieren.
Andorra kann auch SDL ? Praktisch. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Ja, aber erst mit der nächsten Version. Im CVS läuft es schon.
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Wie hast du bei der DevIL lib die so Dateien erzeugt ? Ich finde einfach keine und ich schaffe es auch nicht eine so Datei zu erzeugen. Daran scheitert es einfach.
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Ich habe jetzt eine Verknüpfung erstellt von:
ln libIL.so.1 libFreeImage.so Aber leider werden immer noch keine PNG Dateien geladen. :( :( |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
ich habe jetzt die Frage nochmal hier gestellt:
![]() damit es hier nicht ganz so unübersichtlich wird. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hallo.
Bevor ich loslege, :-D erstmal ein dickes Lob an die Entwickler. :thumb: Ich weiß weder ob es hier der richtige Ort ist, dies zu posten, noch ob es für alle Benutzer von Andorra 2D interessant sein könnte oder nur für die Entwickler. Ich versuche mich gerade in die Engine einzuarbeiten und scheiterte schon am ersten Beispiel. Allerdings liegt das Problem nicht bei mir, wie ich nach etwas suchen festgestellt habe. In den beiliegenden Beispiel-Projekten ist in den Projektoptionen (Compiler-Optionen) die Überlaufsprüfung abgeschaltet. Ist leider ein wenig unsicher wie ich festgestellt habe. Denn in der Unit "AdContainers.pas" fliegt man beim compilieren mit einem EIntOverflow-Error zurecht raus.
Delphi-Quellcode:
FCapacity ist, bis jetzt, immer 0 gewesen, dadurch die Exception.
...
procedure TAdMap.Rehash(ACapacity: Cardinal); ... //Copy elements into new array PList1 := FData; for i := 0 to FCapacity - 1 do // <--- Hier der Fehler, FCapacity ist bisher immer 0 gewesen begin with PList1^ do begin StartIteration; while not ReachedEnd do begin PCurItem := GetCurrent; //Insert element PList2 := PTmp; Pos := (PCurItem^.Key.Hash mod ACapacity); Inc(PList2,Pos); PList2^.Add(PCurItem); end; end; Inc(PList1); end; ... In meinen (neuen) Projekten ist diese Bereichsprüfung standardmäßig eingeschaltet, dadurch flog ich raus und beim kompilieren der Demos funktionierte es. Es gäbe zwei Möglichkeiten das Problem zu lösen. Entweder man schaltet die Überlaufsprüfung aus, was ich persönlich nicht für günstig halte, da, wie man sieht, sich schnell Fehler einschleichen können, die das ganze Programm in den Abgrund ziehen. Oder es wird die Prüfung vor der Schleife durchgeführt. Allerdings müsste man das im Quelltext ändern und das evtl. an mehreren Stellen.
Delphi-Quellcode:
Falls mir hier dennoch irgendein Fehler unterlaufen sein sollte, Sorry...
...
procedure TAdMap.Rehash(ACapacity: Cardinal); ... //Copy elements into new array PList1 := FData; if FCapacity > 0 then // <-- Hier prüfen... begin for i := 0 to FCapacity - 1 do // <-- ... damits hier nicht knallt begin with PList1^ do begin StartIteration; while not ReachedEnd do begin PCurItem := GetCurrent; //Insert element PList2 := PTmp; Pos := (PCurItem^.Key.Hash mod ACapacity); Inc(PList2,Pos); PList2^.Add(PCurItem); end; end; Inc(PList1); end; end; ... Gruss BlackDragon |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
@Igel ich habe den Fehler gefunden:
![]() anscheind gibt es Probleme bei der "Image Liste" wenn dort LoadFromFile verwendet wird. Es liegt also nicht an PNG. Weil die LCL kann PNG Bilder laden. Wie ich heute erfahren habe. Ich habe mir aber alle Stellen die das Laden von Grafiken durchlaufen angesehen, aber nix gefunden, was der Fehler sein könnte. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hallo,
Hebe soeben Andorra auf meinen Rechner geladen und das Tutorialbeispiel eingetippt und compiliert. Funzt soweit. Werde jetzt erst mal damit experimentieren. Danke an die Entwickler. I.A |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hallo,
danke für den Patch und das Lob - werde ich einbauen. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Liste der Anhänge anzeigen (Anzahl: 1)
Halloooo,
Ich habe jetzt das Handbuchbeispiel in Delphi 7 (Per) eingegeben.
Delphi-Quellcode:
Habe die Dlls nicht mit D7 neu übersetzt. Das wird empfohlen, das die Dlls mit Turbo Delphi übersetzt sind. In der Empfehlung steht aber auch, das bei falscher Dll-Version eine Exception kommt. Die erhalte ich aber nicht. Aber die Bitmap (Habe eine andere genommen, da ich Texture.bmp, wie im Original angegeben nicht habe. Die Bitmap wird aber nicht angezeigt, sondern sowas hier:
unit main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ADDraws, ADClasses, ADTypes; type TAdForm = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } procedure Idle(Sender: TObject; var Done: Boolean); end; var AdForm: TAdForm; ADDraw: TADDraw; AdImageList: TAdImageList; implementation {$R *.dfm} procedure TAdForm.FormCreate(Sender: TObject); begin ADDraw := TADDraw.Create(Self); AdDraw.DllName := 'AndorraDX93D.dll'; if AdDraw.Initialize then begin // Hier geht's gleich weiter Application.OnIdle := Idle; AdImageList := TAdImageList.Create(AdDraw); with AdImageList.Add('bild') do //Zu der Liste wird ein Bild mit dem Namen "bild" hinzugefügt. begin Texture.LoadGraphicFromFile('Gins.bmp'); //In die Textur wird ein Bild hineingeladen. end; AdImageList.Restore; //Hier geht es jetzt weiter mit zeichnen end else begin ShowMessage('Error while initializing Andorra 2D. Try to use another display'+ 'mode or use another video adapter.'); halt; //<-- Schließt die komplette Anwendung end; end; procedure TAdForm.FormDestroy(Sender: TObject); begin ADDraw.Free; end; procedure TAdForm.Idle(Sender: TObject; var Done: Boolean); begin if AdDraw.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann... begin //auch hier geht's bald weiter. AdDraw.BeginScene; AdDraw.EndScene; AdDraw.Flip; end; Done := false; end; end. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hi I.A.
Eigentlich sollte bei dem vorliegenden Quelltext überhaupt nichts zu sehen sein (außer ein schwarzer Bildschirm). Bist du sicher, dass dieser Code auch so in deinem Quelltext steht? PS: Ich habe gerade kein Andorra installiert aber das Bild kannst du wenn ichs Recht in Erinnerung habe ungefähr(!) so darstellen: So musst dus machen:
Delphi-Quellcode:
Gruß
procedure TAdForm.Idle(Sender: TObject; var Done: Boolean);
begin if AdDraw.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann... begin //auch hier geht's bald weiter. AdDraw.BeginScene; AdImageList.Find('bild').Draw(AdDraw,0,0,0); // AdDraw|x|y|PatternIndex // ODER direkt über den Index: AdImageList.Items[0].Draw(AdDraw,0,0,0); AdDraw.EndScene; AdDraw.Flip; end; Done := false; end; Neutral General |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Neutral General,
Danke erst mal für Dein Listing! Ja,ich bin mir sicher, das ich den Quelltext so eingegeben habe. Hab ihn so in den Thread kopiert. In Delphi Bearbeiten->Alles Markieren, dann Beaarbeiten->Kopieren und in der DP Bearbeiten->Einfügen. Allerdings muss es heißen: AdImageList.Items[0].Draw(); Hast Du ja grad eben noch korrigiert. Die Bitmap ist jetzt ok, aber der Hintergrund ist nicht komplett schwarz. So sieht es jetzt bei mir aus: Jetzt hör ich aber erst mal auf. Morgen ist auch noch ein Tag. Ich schlafe erst mal. Bis denne!!! :kiss: |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hi,
Also das ist doch etwas seltsam. Woher kommt denn diese Schrift? Stammen diese Sätze in irgendeiner Weise von dir? Wobei ich schätze, das es Sätze aus Igels Tutorial sind... Aber irgendwo müssen die ja stehn. Die werden ja nicht "einfach so" da angezeigt. Warte am besten mal auf den Schöpfer himself :stupid: Bin jetzt auch müde und gehe ins Bett. Mach das am besten auch. So spät passiert es schonmal das man ein Brett vor dem Kopf hat ;) Edit: Den letzten Satz hätte ich mir ja sogar sparen können seh ich gerade :) Dann machs auch gut, bis morgen oder so, gute Nacht ;) :mrgreen: |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Die Fläche wird natürlich nur schwarz, wenn du sie auch mit Schwarz füllst. Ansonsten wird wirres Zeug aus dem Grafikspeicher ausgegben (letzteres ist Spekulation :mrgreen: ).
Also noch AdDraw.ClearSurface(clBlack) eingefügt und gut ist.
Delphi-Quellcode:
Grüße
procedure TAdForm.Idle(Sender: TObject; var Done: Boolean);
begin if AdDraw.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann... begin //auch hier geht's bald weiter. AdDraw.BeginScene; AdDraw.ClearSurface(clBlack); // Das hast du vergessen, steht aber im Tutorial drin ;-) AdImageList.Find('bild').Draw(AdDraw,0,0,0); // AdDraw|x|y|PatternIndex // ODER direkt über den Index: AdImageList.Items[0].Draw(AdDraw,0,0,0); AdDraw.EndScene; AdDraw.Flip; end; Done := false; end; |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hallo,
Danke, @Codewalker, das war die entscheidende Anweisung. Jetzt kann ich weiter machen. Jetzt habe ich den gewünschten schwarzen Hintergrund. Und die Bitmap wird auch korrekt angezeigt. Danke auch @Natural General, für die gegebene Hilfe! :hello: |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hallo,
es wäre auch schön, wenn in der nächsten Version die Namen der Texturen in einer Liste oder Datei nicht Casesensitiv wären. Also mit LoerCase() vergeleichen. Das erleichtert einem die Arbeit nämlich ungemein. gruß |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Davon würde ich abraten, da es durchaus (nach meinen Erfahrungen) üblich ist, die Namen der Textur einheitlich mit dem Dateinamen zu halten und das ganze auch unter Linux funktionieren soll, wo die Dateinamen auch case sensitiv sind.
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Man könnte es ja einstellbar machen, mich hat es nämlich so seh gestört, dass ich es in meiner Version umgebaut habe.
Ist ja auch keine große Sache. gruß |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Ich frage mich was ist daran so schlimm ?
Unter Linux ist das Standard, nur unter Windows nicht. Wie es mit anderen Systemen aussieht weiß ich nicht. Gut einstellbar währe eine Lösung. Aber die ImageList Datei muss natürlich angepasst sein. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
mimi: läuft inzwischen FreeLibrary bei dir? Wenn nicht, meld dich mal.
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
leider immer noch nicht, ich habe es aufgeben. bzw. ich weiß nicht ob es läuft. Da der Fehler ja anscheind nicht beim PNG Format liegt wie ich anfangst gedacht habe, sondern am AI Format. Also im ImageList Format.
Wenn ich z.b. ein PNG BILD Manuel hinzufüge geht das. Wenn ich aber per AI Datei mache geht das nicht mehr. Ich habe mir die Code Stellen angesehen und auch ein paar Test gemacht. Wie gesagt es muss am AI Format liegen. Wobei die Datei wurde von Diamondback2007 erstellt. Er hat ja Andorra leicht verändert evlt. geht es darum nicht mehr. Ich denke die Lösung währe eine komplett neue AI Datei zu erstellen. Leider läuft der Image Editor unter Linux nur bedingt. Also müsste ich erst einen eigenen schreiben für Linux. Was aber auch nicht viel Aufwand währe. Müsste ich mir überlegen. Ich hatte doch nach einigen Tagen die Frage im Lazarus Forum gepostet: ![]() um den Thread hier nicht allzu durcheinander zu bringen *G* |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Also an mir kann das icht liegen. Das einzige was ich veränert habe, ist, dass die Texturen mit Lowercase vergleichen werden und dass man einen Dll-Pfad für den SetupDlg angeben kann.
Wenn es mit der Datei nicht geht müssen wir uns eben etwas anderes überlegen. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
@mimi:
Hast du den alternativen FreeImage-Header von Inherited bekommen? Seinen Aussagen nach läuft Andorra 2D mit diesem ohne Probleme unter Linux. Wenn nicht schau mal hier: ![]() |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe Andorra 2D jetzt eigentlich soweit, dass (fast) alle 0.4 Features eingebaut sind und funktionieren.
Daher rufe ich zu einem großflächigen Betatest auf: Wer will sollte sich die aktuelle Version aus dem CVS-Archiv herunterladen, und einfach drauf los testen. Tutorial, wie man an das CVS-Repository gelangt gibt es hier: ![]() Für alle die, die DLLs nicht selbst kompilieren möchten und obendrein noch eine nette Shader Demo haben möchten, empfiehlt sich der Anhang ;-) Bis zum Release muss ich "nur" noch hier und da ein paar Exceptions werfen sowie die Dokumentation vervollständigen. Bin auf euer Feedback gespannt, Andreas |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Feedback Nr. 1:
Delphi-Quellcode:
function AdRect(X1,Y1,X2,Y2:LongInt):TAdRect;overload;inline;
Zitat:
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hallo,
also an sich sieht das j gut aus, aber mit OGL bekomme ich nur einen schwarzen Bildschirm und AVs in der Idle Schleife.... DX9 klappt. :) |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Zitat:
Was mich interessieren würde: Verwenden nicht DirectX und openGL unterschiedliche Shadersprachen? Hast du also den Shader 2x programmiert oder gibt es eine andere Lösung? MfG, Bug |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hallo,
@Diamondback2007 Hast du den neusten Grafikkartentreiber installiert? @BUG Schön das es läuft. In diesem Beispiel verwende ich Cg - das ist Grafiksystemunabhängig, da es einen eigenen Compiler beinhaltet. Andorra 2D unterstützt momentan aber auch noch HLSL - das ist nativ in Direct3D eingebaut. Die Cg-Shader-Language und HLSL haben den gleichen Syntax und die gleichen Funktionen, sprich, Cg Shader lassen sich auch mit HLSL laden. @Neutral General Welche Delphi-Version hast du? |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Delphi7, wies links unter meinem Avatar steht ;) :P
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Ok, das Problem sollte gelöst sein.
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich arbeite gerade das Kapitel "The Spriteengine" durch und erhalte eine EAccessViolation an Adresse: $00459CBB, Lesen von Adresse 0024. Der Debugger hält in der Unit AdDraws in der folgenden Prozedur auf der if- Anweisung:
Delphi-Quellcode:
Die Anwendung zeigt sich nicht an, ich erhalte stattdessen das Icon in der Taskleiste, das mir zeigt, das das Programm aktiv ist.
procedure TAdImage.Draw(Dest:TAdDraw;X,Y,PatternIndex:integer);
begin if (Texture.Texture.Loaded) and (Dest.CanDraw) and (AdMesh <> nil) then begin SetCurrentColor(255); if (PatternIndex < 0) then PatternIndex := 0; if (PatternIndex > PatternCount-1) then PatternIndex := PatternCount-1; DrawMesh(Dest, AdRect(X,Y,X+Width,Y+Height), Rects[PatternIndex], 0, 0, 0, bmAlpha); end; end; AUßerdem habe ich die Frage, wie groß das einzelne Bild ist. In der SetLine() Methode wird Start- und Enpunkt von 0..7 bzw 8..15 gesetzt, andererseits aber X = -96 bzw. Clientwidth + 96. Ich habe damit die Arbeitsweise der Methode noch nicht richtig verstanden. Was macht die SetLine() Methode? Ist das bild 8 Pixel und der FRame 96 Pixel groß? Die folgenden beiden Anweisungen stehen in der SetLine() Methode:
Delphi-Quellcode:
Allerdings erhalte ich die o.g. Exception und mein Programm zeigt gar nix an. Ist das ein bekannter Fehler in der Bibliothek, oder habe ich was falsch gemacht?
X:=ClientWidth + 96;
Y:=Clientheight - 96; Ich verstehe nicht, warum ClientWidth addiert wird, um auf die neue Position zu kommen, bzw. ClientHeight subtrahiert wird, um auf die nächste Position zu kommen. Damit käme die Figur zwar, wenn sie rechts das Bild verlässt, links wieder rein, aber dann? Die Anweisung Y:=Random(ClientHeight - 96) sagt mir, das die Figuren an zufälliger Position angezeigt werden sollen. Warum aber dann die Berechnung von X und Y mittels ClientWidth bzw ClientHeight? Falls der Fehler bei mir liegt, hier noch mein aktueller Quelltext. Es ist der Quelltext des Kapitels "My first picture" und zwar der Teil, wo die Datei "Boy.bmp" geladen wird und Einzelbilder angezeigt werden, oder halt eines der Einzelbilder an zufälliger Position. Kann ich aus o.g. Grund nicht testen. Wer kann mir weiter helfen? |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Hallo!
Hab grad mal wieder bissl hier rumgesurft und bin auf das Theme hier gestossen. Schnell Andorra runtergeladen und das erste Handbuch Kapitel durchgearbeitet. Funzt ja klasse. Wir werden bestimmt wieder voneinander hören. Hoffentlich bin ich dann aber einer derjenigen, die eine Frage zur Programmierung beantworten, staa selber Fragen zu stellen. Bis bald. Delphifan2004 |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
@I.A
Die Namen in der ImageList sind CaseSensitive. Du musst immer die gleiche Groß- und Kleinschreibung verwenden |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Danke @igel457: Habe jetzt die Schreibweise angepasst und voila, die Anzeige funzt.
Jetzt will ich weiter machen und deshalb hier das nächste Problem: Ich verstehe die SetLine() Methode nicht vollständig, hier ist sie:
Delphi-Quellcode:
Ich nehme mal an, das die Figur 96 Pixel hoch und 96 Pixel breit ist. In die Breite geht der Bewegungsspielraum mit ein. Welcher Teil ist dann aber 8 Pixel breit? StartPt u. EndPt sagen mir das.
TForm1.SetLine;
begin XSpeed := -XSpeed; if XSpeed > 0 then begin StartPt := 0; //Den Zwck dieser Anweisungen EndPt := 7; //verstehe ich nicht! X := -96; end else begin StartPt := 8; //Den Zwck dieser Anweisungen EndPt := 15; //verstehe ich nicht! X := ClientWidth+96; end; Y := Random(ClientHeight-96); end; Wenn XSpeed < 0 ist, dann ist StartPt = 8 und EndPt = 15 und wenn XSpeed > 0 ist dann StartPt = 0 und EndPt = 7. Welche Bedeutung haben diese Anweisungen für die Bewegung der Figur. Ich sehe zwar im Quelltext der Methode die Anweisungen und weiß, was die machen, kann aber deren Sinn in Bezug auf die Bewegung der Figur nicht nachvollziehen. Kann mir jemand dabei helfen? Es bringt ja nix, wenn ichb jetzt das nächste Kapitel durcharbeite, ohne den Bewegungsablauf der Figur wirklich verstanden zu haben. Es wird eine Imageliste erzeugt. Da drin wird Platz für eine Figur geschaffen. Dann wird die Datei boy.bmp da rein geladen. Aber da drin sind alle Figuren, das heißt alle Einzelbilder, nicht nur eines davon. Woher weiß mein Programm, welches Einzelbild angezeigt werden soll
Delphi-Quellcode:
Mit dieser Methode wird das Einzelbild gesucht. Aber wo ist der Index in die Liste?
AdImageList.Find('figur').Draw(AdDraw,round(X),round(Y),round(Pattern));
Ich nehme an es ist 'Pattern' In der Liste mit dem Namen "figur" wird das Einzelbild gesucht. Ist meine Annahme richtig, das Pattern der Index in die Liste der Einzelbilder ist? Dann wären X und Y die Position der Figur auf dem Bildschirm. Wäre dem so, könnte ich ins nächste Kapitel gehen. Will aber noch mal rückfragen. Will es ja lernen. Habe auch die Diskussion "Hilfeverhalten im Forum" mitgekrigt. Und ich habe nicht vor, mir "meine Hausaufgaben machen zu lassen". Ich will es selber können. Wenn ich schon richtig liege mit meinen Annahmen, um so besser. Dann kann ich weiter machen mit dem nächsten Kapitel. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
"StartPt und EndPt" steht für "StartPattern und EndPattern" und soll die aktuelle Animation spezifizieren.
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
StartPt ist der erste Index der Animationsbilder, EndPt der Letzte. Wenn das Bild animiert wird, soll er ja nur die Animationsschritte anzeigen die zur aktuellen Bewegungsrichtung passen.
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe noch einen Bug gefunden.
Und zwar geht es um das GUI-System. Dort wird der Mauszeiger auch dann noch im Andorra Fenster angezeigt, wenn er das Fenster eigentlich schon verlassen hat. Im Screenshot kann man das eigentlich nicht sehen, da bei einem Screenshot der Mauszeiger nicht mit auf dem Bild ist. Er ist allerdings auf der Form zu sehen. Dort dürfte er nicht mehr sein. Das ganze ist beliebig reproduzierbar. |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
It's not a bug, it's a feature
|
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Will ich ja mal nicht hoffen ;)
Sollte aber wahrscheinlich kein Problem sein zu beheben oder? |
Re: Andorra 2D [Ver. 0.35, 04.03.08]
Der Fehler (der wie gesagt kein Fehler ist, von daher war das schon ernst gemeint) kommt einfach daher, dass das Andorra 2D interne Mauszeigersystem für die GUI verwendet wird. Das bedeutet, das die Mauszeiger kein Grafikkarten-Overlay-Sprite im eigentlichen Sinn sind, sondern (wie in jedem Spiel auch) komplett von der Engine gezeichnet werden. Dadurch können die Mauszeiger auch mit Alphablendeffekten sowie Animationen versehen werden. Da ich jedoch nur auf das MouseMove-Event des Fensters reagiere, bekomme ich keine Mauszeigerbewegung mehr mit, sobald der Mauszeiger das Fenster verlassen hat.
Lösung: Besorge dir jeden Renderschleifendurchlauf die aktuellen Zeigerkoordinaten (GetCursorPos, unit Windows), vergleiche diese mit den letzten, wenn sich diese verändert haben rechne Sie in Fensterkoordinaten um und rufe Manuell AdGUI.MouseMove auf. Allerdings sollte man meinen, das die meisten Spiele sowieso im Vollbildmodus ablaufen, da ist das dann egal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz