![]() |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
z.B. AdImageList.Items[0]
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Danke, war eigentlich logisch, stand ich mal wieder auf dem Schlauch...
Aber da erhalte ich den Fehler: Zitat:
Delphi-Quellcode:
AdGUIImage.Picture.LoadFromGraphic(bmp);
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Oh, das ist dann ein Fehler im Quellcode - der Parameter zu Übergabe müsste eigentlich vom Typ TObject sein. Wenn du das entsprechend umänderst sollte es gehen.
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Ähm nein...^^ zur Verdeutlichung hab ich mal 2 Screenshots gemacht. Das ganze soll so aussehen, wie im ersten beigefügten Bild (TImageLevelEditor.jpg) (das ist noch mit TImages) Aber es sieht so aus wie im nächsten Bild (AndorraSpriteLevelEditor.jpg) Alle Sprites und TImages haben als Breite und Höhe 48 zugewiesen bekommen |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Danke Andreas, damit gehts :)
Zu dir fui-tak, da fällt mit wirklich nichts dazu ein... :pale: |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hi, ich hab schon wieder eine Frage:
Mit einem BackgroundSprite kann man sich ja einen Untergrund sinnvoll aufbauen. KAnn ich damit aber auch bewerkstelligen, dass sich an einem bestimmten Ort z.B. Wasser befindet? Wisst ihr was ich meine? mfG :dp: |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Naja indem du einen "Wassersprite" nimmst ;)
Zitat:
Und du veränderst die Größe nirgends? Auch nicht mit Zoom o.ä.? Erstelle ein neues Projekt und baue nur das ein was zur Anzeige eines Tiles notwendig ist. Vielleicht kommt man dann den "Fehler" auf die Spur? Und ich bin mir nicht sicher, aber muss man nicht auch die Größe des Inhalts ändern? Also so ähnlich wie bei TImage wo man auch das Picture ändern muss (u.U.)? MfG xZise |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Zitat:
Wenn ich Zeit habe, werde ich mal deinem Rat folgen, ein neues Programm zu erstellen und dann mal zu gucken Trotzdem Danke an alle, die helfen wollten! |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Ich hab mein Problem jetzt behoben gekriegt. Der Fehler war, dass ich die Panelgröße, des Panels auf dem die Sprites drauf sind, an die Anzahl der Sprites angepasst habe. Dadurch ist dieser Effekt entstanden. Jetzt habe ich als Panelgröße 1024 * 768 genommen und alles passt.
Man sollte also, den Untergrund schön groß wählen und dann nicht mehr daran rumspielen |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Ahso, sehr schön :)
Ich hab dann auch mal eine Frage: Kann man einem Sprite mehrere Bilder zuweisen? mfG EDIT: Eine Weitere Frage: Wenn ich mit der Maus wohin klicke, auf einem Andorra Fenster mit 800 mal 600 als abmessungen, dann kanns z.B. 50,200 sein. Aber wie bekomme ich den angeklickten Punkt in AdDraw Koordinaten raus, diese können ja z.B. 5000,20000 sein... mfG :gruebel: |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Weiß das niemand? Nichtmal der gute Igel? :gruebel:
mfG :dp: trotzdem |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
1. Ja du kannst einem Sprite mehrere Bilder zuweisen, wenn du eine entsprechende Klasse davon ableitest, die das unterstützt.
2. Das musst du entsprechend Umrechnen. Du kennst die Größe des Viewports, die Größe des Koordinatensystems und die Position deiner Spriteengine. |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hi Andreas, vielen Dank für deine Antwort.
zu 1.: Das bekomme ich wohl vorerst nicht hin. zu 2.: Da viel mir jetzt was auf. mit
Delphi-Quellcode:
im MouseDown Ereignis des Forms erhalte ich immer Werte, relativ zu dem Punkt, der zuletzt angeklickt wurde.
p := Mouse.CursorPos;
Showmessage('X: '+IntToStr(p.X) +#13#10+ 'Y: '+IntToStr(p.Y)); Kann sich das jemand erklären, bzw. kennt da jemand eine Lösung? mfG und Danke :dp: |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Meiner Erfahrung nach gibt Mouse.CursorPos die Koordinaten der Maus auf dem Bildschirm an, also den Abstand von oberer und linker Monitorkante
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hi, tatsächlich hast du Recht, ich weiß auch nicht, was da vorhin falsch war.
Allerdings, bei folgender DoMove procedure
Delphi-Quellcode:
bleibt die Figur niemals stehen...
procedure TEinheit.DoMove(TimeGap: Double);
var A, B, AB, BB: Integer; begin inherited DoMove(TimeGap); A := round(X); B := round(X+200); AB := round(Y); BB := round(Y+200); if (Aim.X in [A..B]) and (Aim.Y in [AB..BB]) then // er bleibt stehen begin AnimActive := false; AnimLoop := false; FXSpeed := 0; FYSpeed := 0; case FDirection of //das kommt später dirS: AnimPos := 64; dirSW: ; dirW: ; dirNW: ; dirN: ; dirNE: ; dirE: ; dirSE: ; end; end else // er läuft weiter begin X := X + FXSpeed * TimeGap; Y := Y + FYSpeed * TimeGap; end; Collision; end; Weiters durchläuft er auch ein Haus bei folgender DoCollision:
Delphi-Quellcode:
procedure TEinheit.DoCollision(Sprite: TSprite; var Done: Boolean);
begin inherited; if (Sprite is THaus) then begin AnimActive := false; AnimLoop := false; FXSpeed := 0; FYSpeed := 0; case FDirection of dirS: AnimPos := 64; dirSW: ; dirW: ; dirNW: ; dirN: ; dirNE: ; dirE: ; dirSE: ; end; end; end; |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
kleine ergänzung:
Aim wird so gesetzt:
Delphi-Quellcode:
und zu gehen komm ich so, in der MouseDown procedure:
procedure TEinheit.Gehen(P: TPoint);
begin FYSpeed := 0; FXSpeed := 0; Aim := p; p.X := p.X - round(X); p.Y := p.Y - round(Y); FXSpeed := Speed * p.X / sqrt(p.X * p.X + p.Y * p.Y); FYSpeed := Speed * p.Y / sqrt(p.X * p.X + p.Y * p.Y); AnimLoop := true; AnimActive := true; SetLength(Form2.men, Length(Form2.men)+1); Form2.men[Length(Form2.men)-1] := TEinheit.Create(Form2.AdSpriteEngine2); end;
Delphi-Quellcode:
if (Button = mbRight) then
begin if Length(men) > 0 then begin for i := 0 to Length(men)-1 do begin if men[i].angeklickt then begin men[i].Gehen(P); end; end; end; end; |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hat sich erledigt, konnte das Problem lösen.
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Jetzt hab ich aber eine weitere Frage.
Eine Klasse wurde von TImageSprite abgeleitet. im DoMove dieser rufe ich ganz am Ende:
Delphi-Quellcode:
auf.
Collision;
An diese Stelle komme ich immer, allerdings wird die DoCollision procedure niemals ausgeführt. Muss ich für Kollisionen noch etwas beachten? Danke mfG |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Schau dir mal die Demo von WormHunter an.
Ich glaube die müsste dir da weiterhelfen |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hi, diese Demo hab ich mir bereits angeschaut, allerdings konnte ich nur feststellen, dass ich am Ende von DoMove, Collision; aufrufen muss.
Und dann in DoCollision die genaue Behandlung.(if sprite is ... etc.) Genau dies mache ich auch, muss ich für Kollisionen eventuell irgendwelche Befehle ich die Idle procedure schreiben? mfG |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Ich schau mir de Demo gerade an erste Ergebnisse habe ich schon:
Delphi-Quellcode:
Also Zeile 194 und 215 denke ich mal hast du vergessen, ich vermute mal deswegen gehts nicht.
Zeile 194: AdPixelCollisionTester := TAdSpritePixelCollisionTester.Create(AdDraw);
Zeile 215: CollisionTester := AdPixelCollisionTester; Zeile 493: procedure TMainCharacter.DoCollision(Sprite: TSprite; var Done: boolean);... Zeile 521: Collision; |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hmmm. Nachdem ich diese Zeilen hinzufügte (und am Ende natürlich das Free) ändert sich leider nichts... :wiejetzt:
Aber vielen Dank für dein Interesse :dp: |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Zeig mal deinen Code vielleicht kann ich dir dann wieterhelfen.
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Liste der Anhänge anzeigen (Anzahl: 1)
Der ist ziemlich lang, ich kann dir ja mal die Unit anhängen.
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Konntest du bereits was rausfinden?
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Also ich hab mir den Quelltext jetzt angeschaut, aber hab selber schon lange nichts mehr gemacht mit Andorra.
Vielleicht schreibst du mal direkt ins Forum von Andorra die können dir bestimmt weiter helfen. |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Dafür müsst ich mich bei SourceForge anmelden.... :?
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hallo!
ich hoffe ich störe nicht wenn ich jetzt so zwischen rein Frage. ich habe ein kleines ![]() Jetzt versuche ich es nach Andorra2D umzuprogrammieren. Doch ich habe ein Problem: beim Mohrhuhn habe ich hingekriegt das der Hintergrund und die Hühner, die auf dem Formular sind, gescrollt werden. Das heißt wenn der Cursor am linken oder rechten Rand ist, dann bewegen sich alle images (mit eiem Timer) um z.B 10 Pixel nach links/rechts. Jetzt will ich das mit andorra genauso machen. Mit dem Timer geht das, jedoch wird nur das zuletzt erstellte Huhn veschoben. Meine Frage: wie kann ich die Figur aus der klasse TFigur aus dem Andorra2d tutorial (die erste Grafik/die Spriteengine) so erstellen, dass jede Figur angesprochen werden kann? geht das etwa mit einem Array(was bei mir nicht funktioniert hat...)? Oder sonst irgendwie anders? wäre dankbar für Hilfe |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Warum bewegst du nicht einfach die kamera nach links oder rechts.
Müsste eigentlich einfacher sein. Schau dir mal die Demo von Bounce an da funktioniert das mit den Pfeiltasten. Müsstest du dann nur noch so umschreiben, dass sich die kamera bewegt wenn du die maus nach links oder rechts bewegst Edit: Hier ist der code:
Delphi-Quellcode:
if key = AVK_LEFT then
AdSpriteEngine.X := AdSpriteEngine.X + 10; if key = AVK_RIGHT then AdSpriteEngine.X := AdSpriteEngine.X - 10; if key = AVK_UP then AdSpriteEngine.Y := AdSpriteEngine.Y + 10; if key = AVK_DOWN then AdSpriteEngine.Y := AdSpriteEngine.Y - 10; |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Danke für die schnelle Antwort!
Aber wo finde ich die DEmo von Bounce? |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Ich glaube er meint die Andorra 2D "Bounce"-Demo. Die ist im Verzeichnis "demos/SpriteEngine/Bounce/"
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hallo,
Hab nen problem. Ich klapper erstmal meine alten AD2d versuche ab, und bin mir ziemlich sicher das es funktioniert hat, aber nun hab ich probleme:
Delphi-Quellcode:
Bei der zeile haperts.
ImgList.Items[0].Draw(AdDraw,0,0,0);
Ob ich nun Find, oder Items verwende ist egal, der fehler ist der selbe, welcher weiss ich selbst nicht genau denn es erscheint nur eine Access Violation obwohl ich alles created und gefreed hab... Die Bilder sind auch sicher in der ImgList vorhanden. Inizialisierung..
Delphi-Quellcode:
Also woran kanns liegen? Ohne die oben genannte zeil( genauer gesagt ohne Das Draw! Funktioniert alles, natürlich wird dann nichts gezeichnet ;P
if AdDraw.Initialize then
begin ImgList := TAdImageList.Create(AdDraw); ImgList.LoadFromFile(ExtractFilePath(ParamStr(0))+'imgs/imgs.ail'); ImgList.Restore; Timer.Enabled := true; end..... LG Ebil |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hallo,
frei nach dem Motto "was der Daniel kann, kann ich schon lange ;-)", habe ich ein kurzes (~12 Min) Video erstellt, das ein neues Feature der kommenden Andorra 2D-Version ("It comes when it's done") demonstriert: Das neue "Registrations Server"-Pluginsystem, welches nicht nur mit Andorra 2D verwendet werden kann, sondern sich auch prima für andere Anwendungen eignet. Das Video kann hier angeschaut werden: ![]() Für alle mit relativ schneller Internetverbindung (sprich DSL) empfehle ich die "HD"-Variante, aber auch in der "SD"-Version lassen sich alle Quelltexte problemlos lesen. Viel Spaß mit dem Video, ich bin auf euer Feedback gespannt, Andreas @Alle anderen: Bitte bitte stellt eure Fragen in einem Extra-Thread. Dieser Thread soll eigentlich in erster Linie zur Diskussion um das Projekt ansich dienen! Vielleicht könnte sich da auch mal ein Moderator einschalten. |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hallo,
hab eine kurze Frage zu dem Andorra Tutorial. Wie kann man die Objekte, die sich im Programm bewegen so erstellen, dass eine Aktion ausgelößt wird (oder das Objekt verschwindet) sobald man auf diese Klickt? Also anders ausgedrückt, wie macht man jedes Objekt sozusagen individuell "ansprechbar" ? Hoffe man kann mir helfen EDIT: sorry hab das "Kleingedruckte" nicht gesehn^^ werd ein extra thread öffnen oneP |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Ich versuche gerade Andorra unter MacOS (Snow Leopard) mit Lazarus (Daily-Build vom 19.12.2009, da dort ein wichtiger MacOS Fix eingepflegt wurde) zu kompilieren. Dazu habe ich mir einfach mal das Linux-Tutorial geschnappt, jedoch scheitert der Compiler schon früher, als das Tutorial einsetzt:
Zitat:
Danke schonmal, Roman /e: Ich habe es mal in diesen Thread geschrieben, weil es sich ja um etwas grundlegendes handelt - schliesslich wirbt Andorra mit seiner (ihrer?) Plattformunabhängigkeit ;) |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Schau dir mal unter den Kompiliere Einstellungen die LCL-Schnittelle an.
Wenn die "Windows", in den Uses-Klausel Auftaucht, kannst du sie löschen. Eventuell musst du dann noch lcltype, lclinft und lclproc einfügen. So wie es sich anhört verwendest du das Falsche Andorra "AdVCLWindow". Bei Lazarus heiß die VCL LCL. |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Danke für deine Antwort. Leider kann Lazarus die Unit lclinft nicht finden.
Zitat:
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Zitat:
Zitat:
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Zitat:
Zitat:
Nein, ich meine das NonVCL-Projekt, weil es so heißt ;) Das ich hier ohne LCL kompiliere ist zwar richtig, aber ich kompiliere ja auch ohne VCL. Kommt also aufs selbe raus ;) Zitat:
Folgende Fehlermeldung offenbart sich jetzt: Zitat:
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Andorra2D ist nur sehr sehr stark eingeschränkt mit Mac OS X kompatibel (praktisch: Window/Input/Event-Support ist drin, beim Laden von Bildern wird es allerdings schon happig) aus dem Grund dass die verwendeten Bibliotheken nicht auf Mac OS X zugeschnitten sind, z.B.:
- DevIL: Der offizielle Mac OS X Support für DevIL kam erst mit Version 1.7.1 (Release: 26.8.08), gelegentlich lese ich aber noch von Problemen unter Mac OS X mit DevIL, hier müssten auf jeden Fall die Pascal-Bindings angepasst werden - FreeImage: Eigentlich schon plattformunabhängig auch für Mac OS X, aber die Pascal Bindings wurden noch nicht aktualisiert und laufen nur unter Windows - GLFW: Da habe ich mich vor einem halben Jahr dran gesessen und das Binding aktualisiert, damit auch die Version 2.6 mit FreePascal unter Mac OS X nutzbar ist. Im GLFW-SVN habe ich auch eine Version für die in der momentan in Entwicklung befindende Version 2.7 hochgeladen, mit der es auch möglich ist, GLFW statisch in die Anwendung reinzukompilieren (nur mit FreePascal) - dglOpenGL: Da habe ich mal im DelphiGL-Forum einen Post erstellt, wie man dglOpenGL auch unter Mac OS X benutzen kann und auf meiner Homepage gibt es auch einen Mac OS X - kompatiblen dglOpenGL-Header zum Herunterladen (allerdings noch nicht die aktuelle Headerversion 3.2.2, da bin ich noch nicht dazu gekommen, die anzupassen) Generell sollte es schon gelingen, ein leeres Fenster mit Andorra2D unter Mac OS X erstellen zu können. Du musst allerdings noch die AdStdWindow.pas anpassen. Ändere in der Zeile 27 das AdVCLWindow in AdSDLWindow. Lösche dann in der Main.pas die Referenz zu AdFreeImage aus der uses-Liste. Natürlich musst du noch gegen das SDL-Framework linken, sonst bekommst du Fehler beim Erstellen der Anwendung. Lade dir erstmal das Framework von ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 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