![]() |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Komisch, die AdStandardFontGenerator.pas sollte durch das Definieren des Kompilerschalters deaktiviert werden:
Delphi-Quellcode:
//Auszug aus AdDraws.pas
uses SysUtils, Classes, AdClasses, AdTypes, AdList, AdPersistent, AdWindowFramework, AdDLLLoader, AdCanvas, AdBitmap, AdFontFactory, AdFont {$IFNDEF DO_NOT_INCLUDE_STD_FORMATS} ,AdStandardFontGenerator, AdSimpleCompressors, AdFormats {$ENDIF} {$IFNDEF DO_NOT_INCLUDE_STD_WINDOWMGR} ,AdComponentWindow {$ENDIF}; |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Hallo Andreas,
ich wollte gerade an Freggels II weitermachen, und muss erstmal alle Änderungen durchführen :) Nun bekomme ich jetzt ständig Fehlermeldungen bezüglich des Fonts? Kann ich jetzt kein Font zwischenspeichern und immer wieder verwenden? Davon abgesehen: Ich quäle mich gerade mit der AdGUI durch. Und zwar habe ich das Problem dass er bei mir nichts anzeigt, obwohl ich alles so gemacht habe, wie verlangt. Also ein Objekt davon erstellt, und das auch freigegeben. Nun zeichnet er nichts, also dachte ich, im Tutorial stehe nicht, dass ich in der Schleife AdGUI.Draw schreiben müsste. Also auch das gemacht, und es tauchte immerhin meine GUI auf, aber mehr auch nicht! Also auch keinen Cursor... Und auch habe ich mir "AdGUI.Draw" das Problem, dass das Formular nicht zentriert ist, obwohl die Eigenschaft auf "true" steht. MfG xZise |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Hallo Fabian,
blättere in diesem Thread mal zwei Seiten zurück und schaue dann ganz unten - da habe ich das mit dem neuen Fontsystem schon einmal erklärt. Den von Fonts.GenerateFont zurückgegebenen Font kannst du natürlich zwischenspeichern. Für den Fehler im GUI-Tutorial entschuldige ich mich, es müsste AdGUI.Update heißen. Danke für die Fehlerbeschreibungen, Andreas |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Liste der Anhänge anzeigen (Anzahl: 2)
o.O Was ist mit der DP los. Wo ist der Text hin:
Zitat:
Okay... Also irgendwas stimmt da nicht. Und zwar bewegt sich nicht die Maus... Außerdem sieht das... Naja etwas gewöhnungsbedürftig aus. [edit=0]Das mit der Maus hat sich erledigt! Der Connector fehlte.[/edit] [edit=1]Ich habe eine Frage zur der AdImageList: Und zwar würde ich gerne wissen, wie viele Frames auf einen Bild sind :) Ich habe nämlich das Problem, sobald man eine andere Animation verwendet, es sein könnte dass die Frames unterschiedlich sind. So kann ich Beispielsweise keine anderen Bilder verwenden die mehr oder weniger als 8 Frames haben. Konkretes Beispiel: Du erlaubst es deinen Spielern selber "Styles" zu entwerfen, also auch mit verschiedenen Figuren. Was ist aber wenn statt 8 Frames die Figur 12 Frames hat... Btw.: Könnte man die Videos nicht so ähnlich machen, wie eine Animation? Also eine AdImageList schnell abspielen?[/edit] [edit=2]Ich habe mal ein Beispielprojekt angehangen. Ruckelt leider, weil ich es nicht hingekriegt habe, jeden Frame einzeln abzufotographieren :( Außerdem sind bestimmt einige Kniffe von A2D nicht umgesetzt :) Es sollte eigentlich nur als Beispiel dienen. Und das "Video" ist jetzt schon 50 MB groß... Aber da 7z auf 3 % ( :shock: ) runterkomprimiert hat kein Problem für die DP ^^ Eine Frage bezüglich des Kompressors: Ich hatte zuerst PNG genommen, aber da is nix passiert ?! Übrigens solltest du das ModalResult von dem Cancelbutton im ILE auf mrCancel setzten (z.Zt. ist es mrOk)[/edit] MfG xZise |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Hallo,
wie viele Frames (nach DelphiX Pattern genannt) auf einem Bild sind, kannst du über die Property AdImage.PatternCount herausfinden. Um Videos kümmere ich mich früher oder später - dann kannst du gleich MPEGs abspielen. Das schnelle Abspielen einer ImageList funktioniert zwar, benötigt aber unnötig viel Grafikkartenspeicher. Das ganze müsste per Multithreading und über einen Ringpuffer realisiert werden. Um den Fehler mit dem Font auf deinem Screenshot kümmere ich dann auch noch, ich habe diesen selbst auch schon festgestellt. Kannst du mir das mit dem PNG-Kompressor noch einmal näher erklären, ich verstehe nicht so ganz, was du meinst :gruebel: . Hoffe geholfen zu haben, Andreas |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Hi Andreas,
Das mit dem PatternCount hatte ich auch gerade herausgefunden. Und das Video mit der Liste hat auch einen Nachteil :mrgreen: : Du hast keinen Sound... Außerdem befindet sich bei GUI das Formular immernoch nicht in der Mitte ;) Und das mit dem PNG Kompressor ist behoben: Ich hatte in der ImageList als Kompressor PNG genommen und dachte das reicht, aber stattdessen muss ich noch den Kompressor auf PNG setzten (von der ImageList, die die Bilder lädt). Und ich habe eine Frage: Und zwar könnte ich irgendwie Bilder vergrößern / verkleinern? Ich habe das Problem das die Grundgröße 64 px ist, aber ich habe den Spieler in 96 px und zwei Objekte in 32 px. Ich hätte aber gerne alles auf 64 px skaliert :) MfG xZise |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Das setzten des Kompressors sollte eigentlich nicht notwendig sein, sofern du die entsprechende Loader-Unit eingebunden hast.
Bilder kannst du einfach über die StretchDraw-Prozedur während der Laufzeit vergrößert/verkleinert darstellen. Anders musst du wohl zu einem Grafikprogramm deines Vertrauens greifen. Wenn du sonst noch Fragen hast, melde dich einfach, Andreas |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Zitat:
Weil wenn ich "<SpriteEngine>.Draw;" mache, was müsste ich dann umstellen? Ich könnte natürlich auch die Bilder vergrößern/verkleinern. MfG xZise |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Achso, du möchtest Sprites in der Größe anpassen - dazu sollte es reichen die "Width" bzw. "Height" Property entsprechend einzustellen. Im Notfall musst du die Prozedur "DoDraw" deines Sprites überschreiben. Schau dazu einfach mal in den Quellcode von TImageSprite.DoDraw
|
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Okay, dann werde ich wohl eher die Bilder auf eine Größe bringen.
Wo wir gerade bei Größe sind: Kann ich irgendwie sagen, wann zwei Sprites kolidieren? Weil ich habe einen Diamanten und eine schmale Person. Nun kolidieren die schon, sobald das eine Sprite das andere berührt. Außerdem bekomme ich jetzt eine AV. Ich weiß zwar wie ich die auslöse, habe aber keine Ahnung, wie ich verhindere, dass sie ausgelöst wird ohne dabei den Auslöser zu entfernen. xD Also ich habe mehrere Sprite Klassen:
Delphi-Quellcode:
Wenn nun ein Objekt vom Typ TFrPlayer sich bewegt rufe ich "Collision" auf und damit auch "DoCollision". Dort überprüfe ich, ob das Objekt, mit dem es kolidert von TFrInteractiveObject ist.
TFrInteractiveObject = clas(TImageSprite);
TFrPlayer = class(TFrInteractiveObject); Nun bewege ich das weiter (wie die Person), und teste dann, ob das Objekt mir irgendwas koldiert (z.B. einer Wand). Wenn ich die zweite Überprüfung entferne funzt alles, ansonsten bekomme ich eine AV, und bleibt in folgender Funktion hängen (Zeile 14).
Delphi-Quellcode:
MfG
procedure TSprite.Collision2;
var i: Integer; begin //Cancel if this sprite doesn't support collisions. if CanDoCollisions then begin if (Self<>FEngine.FCollisionSprite) and OverlapRect(FEngine.FCollisionRect,BoundsRect) and TestCollision(FEngine.FCollisionSprite) then begin FEngine.FCollisionCount := FEngine.CollisionCount + 1; FEngine.FCollisionSprite.DoCollision(self, FEngine.FCollisionDone); if FEngine.FCollisionSprite.Deaded or (not FEngine.FCollisionSprite.CanDoCollisions) then begin FEngine.CollisionDone := true; end; end; if not FEngine.FCollisionDone then begin for i := 0 to FList.Count - 1 do begin FList[i].Collision2; if FEngine.CollisionDone then begin break; end; end; end; end; end; xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 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