![]() |
delphi sprite verschwindet zu früh
hiho.... ich schreibe grade ein GTA ähnliches Spiel mit DelphiX,
Als erstes habe ich eine Map, die aus einem Jpg bild besteht, und einen Typ, der immer in der Mitte vom Bildschirm ist. Wenn ich auf die tasten drücke bewegt sich die Map, d.h. der typ kann durch die gegend laufen. Bis hierhin kein problem, nur jetzt habe ich extra Sprites für Gebäude (um auf kollisionen usw. zu prüfen), die Gebäude bewegen sich mit der karte:
Delphi-Quellcode:
Das Haus bewegt sich auch und ist sichtbar, aber nur manchmal. Wenn ich unter das Haus laufe, ist alles kein Problem, das Haus wird auf dem DXDraw gezeichnet, bis es dann oben aus dem bild geht. Das Problem taucht auf, wenn ich vom Haus aus nach oben laufe, das Haus verschwindet dann bereits, wenn eigentlich noch die Hälfte vom Haus zu sehen sein sollte... (hoffe mal das versteht man)procedure THaus.DoMove(MoveCount: integer); begin inherited DoMove(MoveCount); X:=Karte.X+500; Y:=Karte.Y+800; {wenn man die karte bewegt, bewegt sich das haus mit (mit abstand 500 und 800 zum Kartenrand)} end; Das Haus habe ich im Oncreate von form1 erstellt:
Delphi-Quellcode:
danke schon mal für antworten
Haus1:=THaus.Create(DXSpriteEngine1.Engine); {Thaus ist vom Typ TImageSprite}
Haus1.Image:=FOrm1.DXImageList1.Items[5]; Haus1.Width:=Haus1.Image.Width; Haus1.Height:=Haus1.Image.Height; Haus1.Visible:=true; |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Multimedia" verschoben.
Die Rubrik "Neuen Beitrag zur Codelib hinzufügen" ist nicht für Fragen, sondern eher für Lösungen gedacht. ;-) |
Re: delphi sprite verschwindet zu früh
Hi,
habe vor kurzen ein Programm mit DelphiX geschrieben welches über Netzwerk funktioniert und habe dein beschriebenes Problem nit, ich weiss jedoch das ich es auch beim coden mal hatte! Lieder weiss ich nicht mehr wie ich es in den Griff bekommen habe! Ich glaube aber das es mit folgendem in verbindung steht! So sollte der Timercode aussehn!
Delphi-Quellcode:
Wichtig bei allen Move Methoden
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin Dxinput1.update; Dxspriteengine1.Move(1); DXdraw1.Surface.Fill(0); Dxspriteengine1.Draw; DXdraw1.Flip; end;
Delphi-Quellcode:
Benutzt du auch einen DXtimer(viel schneller als normaler) Stellt den Interval auf 0 das ist Maximum!
inherited domove(movecount);
Wenn du nicht weiter kommst, poste etwas mehr code damit man mal ausprobieren kann! Vie4lleicht hat es ja schon was gebracht @wardz |
Re: delphi sprite verschwindet zu früh
Danke erstmal für die Antwort, ich habe einen DXTimer mit Interval 0.
Den ganzen block mit DXDraw.flip und so habe ich, auch, ebenso das inherited. Ich habe jetzt mal probiert mir die X und Y Koordinaten von dem Haus und von der Karte auf Labeln anzeigen zu lassen. Dann komme ich zu dem Schluss, das ich das Haus eigentlich sehen müsste, weil x und y im DXDraw Bereich sind. Kann mir einer sagen, wo der x und y wert in meinem Image sind?? ich gehe mal davon aus oben links in der ecke, oder?? Was ich noch beobachtet habe: das haus verschwindet wenn ich hoch gehe genau bei der hälfte. Soll ich noch code posten? ich wüsste halt nicht was.... Ich könnte mir auch vorstellen, dass das problem bei "Haus:=Thaus.create(dxspriteengine1.engine)" liegt, weil ich da schreibe " Haus.Width:=Haus.Image.Width" Lasse ich das letzte weg, funzts aber auch nicht.... thx für hinweise |
Re: delphi sprite verschwindet zu früh
Delphi-Quellcode:
hast du denn vorher auch das bild zugewiesen?Also:
Haus:=Thaus.create(dxspriteengine1.engine);
Haus.Width:=Haus.Image.Width"
Delphi-Quellcode:
benutzt du eine Animation oder einen einfache Sprite?
Haus:=THaus.Create(dxspriteengine1.Engine);
Haus.Image:=DXImageList1.Items.Find('Haus'); Haus.Width:=DXImageList1.Items.Find('Haus').Width; Haus.height:=DXImageList1.Items.Find('Haus').height; Haus.z:=-2;//Das sollte immer grössser sein als dein Background!sonst wird //es überlagert! Wenn du willst kannste dein Projekt mal hochladen dann stell ich das so wie meines ein! @wardz |
Re: delphi sprite verschwindet zu früh
hi atwardz! ich habe grade mal eine kopie von meinem programm zum hochladen gemacht
da dachte ich mir, ich lass die unwichtigen sachen ausm quelltext raus, weils sonst ja nur verwirrt. Aber jetzt taucht das problem nicht mehr auf :mrgreen: ich glaube jetzt werde ich den fehler finden, wenn ich vergleiche... also danke für deine hilfe gruß |
Re: delphi sprite verschwindet zu früh
so, jetzt hab ich das problem, ich weiss nur nicht wie ich es umgehen soll... :?
ich hab nämlich sowas wie eine splash, wo danach ein menü kommt. das menü ist auf einem panel, wenn man bei dem menü auf start klickt soll dass spiel anfangen. d.h. klickt man auf start passiert folgendes:
Delphi-Quellcode:
hmm... und warum malt er nur wegen dem versteckten panel meine sprites nicht mehr ganz??
DXDraw1.Show;
panel1.Visible:=false; ShowCursor(false); //versteckt den mauszeiger also ohne panel funzts. muss ich da vielleicht noch irgendetwas eingeben wie panel1.blabla damit das teil nicht stört?? thx. |
Re: delphi sprite verschwindet zu früh
Hallo !
Mautstelle, dein Problem ist auch bei mir nie aufgetreten. Hast du vielleicht dein Formular nicht in ein TDXForm umgewandelt ?
Delphi-Quellcode:
uses ...,DXClass
type TForm1 = class(TDXForm) private end; Zitat:
|
Re: delphi sprite verschwindet zu früh
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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