![]() |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
In "OnCreate" ist Application.MainForm nil.
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Autsch. Das erklärt das natürlich. Wieder was gelernt und Problem gelöst :dp:
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hallo, wie kann ich AdFont anpassen?(Schriftart, Größe etc.)
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Einfach folgendes:
Delphi-Quellcode:
Wichtig: Die Fontvariable nicht freigeben, darum kümmert sich der Fontmanager.
font := AdDraw.Fonts.GenerateFont('Tahoma', 12, [afBold]);
font.Color := clRed; font.TextOut(...); |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Danke, werd ich probieren.
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hallo, ich habe eine Klasse (TEinheit) von TImageSprite abgeleitet und dort einige Eigenschaften hinzugefügt.
Gibt es irgendeine Möglichkeit, dass das folgende funktioniert?:
Delphi-Quellcode:
angeklickt ist eine der neuen Eigenschaften(Boolean) aber da GetSpriteAt ein Sprite liefert, kennt er das nicht.
AdSpriteEngine2.GetSpriteAt(p.x, p.y).angeklickt := true;
Kann mir jemand helfen? Danke und mfG PS(Edit): Das mit den Fonts klappt inzwischen, danke |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Dann
![]() |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Ah, vielen Dank.
|
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Hallo, ich hab da nochmal ein Problem:
Ich bin im Moment dabei bei meinem Leveleditor für mein Spiel von TImage zu Andorra zu wechseln. Das eigentliche Spiel läuft schon super mit Andorra. Nun mein Problem: Im OnCreate-Ereignis Erzeuge ich das ganze Andorra-Zeugs und anschließend meine Sprites und weise ihnen als Breite und Hoehe 48 zu und als X und Y Werte ihre Position im 2 dimensionen Array multipliziert mit 48 (Sprite[1,1] hat also die Koordinaten 48/48. Das ganze wird aber nicht so dargestellt. Die Sprites werden vergrößert, aber immernoch schön aneinander dargestellt, als hätte man Breite, Höhe, X und Y verändert. Wenn ich mir die Koordinaten der Maus auf dem Bildschirm ausgeben lasse, sehe ich das die Sprites auf dem Bildschirm ca. 100 Pixel hoch und 125 Pixel breit sind. Lasse ich mir die Daten aber mit ShowMessage ausgeben sind sie so wie sie sollen. Hier noch etwas Code der relevant sein müsste:
Delphi-Quellcode:
TLevelEditorSprite = class(THintergrundBild)
tag: integer; hint: string; end; procedure TLevelEditor.FormCreate(Sender: TObject); var i,h: integer; const startgroesse = 48; begin Timer1.Interval := 100; zoom := startgroesse; Panel1.caption := ''; left := Form1.left + 20; top := Form1.top + 20; ListBox1.OnKeyDown := FormKeyDown; Label1.caption := ''; Label2.caption := 'Steuerung:'+#13#10+ 'Bewegen der Oberfläche: W,A,S,D'+#13#10+ 'Quellcode generieren: M'+#13#10+ 'Vergrössern/Verkleinern: +/-'; Label3.caption := 'Größe: '+IntToStr(startgroesse)+'*'+IntToStr(startgroesse); Panel2.caption := ''; for i := 0 to StrToInt(Form1.objektZurueckgeben(-1)) do ListBox1.Items.Add(Form1.objektZurueckgeben(i)); ListBox1.ItemIndex := 0; Image1.Picture.Bitmap.LoadFromFile( programmpfad+'bilder\'+ListBox1.Items.Strings[ListBox1.ItemIndex]+'.bmp'); AdDraw := TAdDraw.Create(Panel1); AdDraw.DllName := programmpfad+'AndorraDX93D.dll'; if AdDraw.Initialize then begin //Application.OnIdle := Idle; //Ich rufe das ganze in einem Timer auf AdImageList := TAdImageList.Create(AdDraw); Form1.AndorraBilderZuweisen(AdImageList); AdSpriteEngine := TSpriteEngine.Create(nil); AdSpriteEngine.Surface := AdDraw; AdPerCounter := TAdPerformanceCounter.Create; setLength(hb,15,10); for i := 0 to high(hb) do for h := 0 to high(hb[0]) do bildErzeugen(i,h,startgroesse); panelAnpassen; label4.caption := 'Spalten: '+IntToStr(high(hb)+1)+' Zeilen: '+IntToStr(high(hb[0])+1); end; end; procedure TLevelEditor.bildErzeugen(xNummer,yNummer,groesse:integer); begin hb[xNummer,yNummer] := TLevelEditorSprite.Create(AdSpriteEngine); Form1.hbdatenZuweisen(hb[xNummer,yNummer],0,AdImageList); with hb[xNummer,yNummer] do begin hint := IntToStr(xNummer)+'t'+IntToStr(yNummer); X := xNummer * groesse; Y := yNummer * groesse; width := groesse; height := groesse; visible := true; end; end; procedure TLevelEditor.panelAnpassen; begin Panel1.Width := Round((high(hb)+1)*zoom); Panel1.Height := Round((high(hb[0])+1)*zoom); end; procedure TForm1.hbdatenZuweisen(bild:THintergrundBild;objektNummer:integer;AndorraImageList:TAdImageList); begin Bild.Image := AndorraImageList.Find(AnsiLowerCase(objektZurueckgeben(objektNummer))); with Bild do case objektNummer of 0: begin wand := false; AnimActive := false; AnimLoop := false; AnimSpeed := 0; AnimStart := 0; AnimStop := 0; end; 1: begin ... 6: begin //Wand Haus wand := true; AnimActive := false; AnimLoop := false; AnimSpeed := 1; AnimStart := 1; AnimStop := 1; AnimPos := 0; end; end; end; procedure TForm1.AndorraBilderZuweisen(AndorraImageList: TAdImageList); begin with AndorraImageList.Add('schuss') do begin Texture.LoadGraphicFromFile(programmpfad+'bilder\schuss.bmp',true,clWhite); PatternWidth := 20; PatternHeight := 20; end; with AndorraImageList.Add('scrollpfeile') do ... AndorraImageList.Restore; end; |
Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Ich hab jetzt nicht den ganzen Quelltext gelesen, aber wenn ich mich nicht irre, könnte
Delphi-Quellcode:
helfen...?! :gruebel:
ScreenToClient(TPoint);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 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 by Thomas Breitkreuz