![]() |
Flackern auf einer Map verhindern...
hi leutz!
heute schon der 3. thread zu meinem RPG ;) yo... ganz schnell: wie kann ich es verhindern, dass meine Map/Karte bei jedem Neuzeichnen flackert? bzw... kann wer folgende funktion verbessern?
Delphi-Quellcode:
viel spaß beim lesen ;)
procedure MapRenew;
var aai,i,ii,iii: integer; MyRect,MyRect2: TRect; bitmap: TBitmap; ctype: string; center: TPoint; begin if map[charx,chary].Begehbar = false then begin charx := map[0,0].startx; chary := map[0,0].starty; form1.Popup1.Title := 'ACHTUNG:'; form1.Popup1.Text := 'Der Charakter war auf einem unzulässigen Feld! Er wurde zurückgesetzt!'; end; ctype := ini.ReadString('Char','type',''); MyRect2 := Rect(0,0,32,32); if charx < 1 then charx := 1; if chary < 1 then chary := 1; character.mapx := charx; character.mapy := chary; form5.paintbox1.canvas.brush.style := bsclear; center := Point(form5.Paintbox1.Width div 2-16,form5.Paintbox1.Height div 2-16); for i := -2 to 2 do for ii := -2 to 2 do try MyRect := Rect(i*32+center.x,ii*32+center.y,i*32+center.x+32,ii*32+center.y+32); Bitmap:=TBitmap.Create; if (charx+i > 0) and (chary+ii > 0) then begin if FileExists('IMG/Map/'+map[charx+i,chary+ii].Textur) then begin Bitmap.LoadFromFile('IMG/Map/'+map[charx+i,chary+ii].Textur); end else Bitmap.LoadFromFile('IMG/Map/none.bmp'); end else Bitmap.LoadFromFile('IMG/Map/none.bmp'); form5.PaintBox1.Canvas.BrushCopy(MyRect,Bitmap,MyRect2,clfuchsia); if (charx+i > 0) and (chary+ii > 0) then begin if map[charx+i,chary+ii].Textur2 <> '' then begin Bitmap.LoadFromFile('IMG/Map/'+map[charx+i,chary+ii].Textur2); form5.PaintBox1.Canvas.BrushCopy(MyRect,Bitmap,MyRect2,clfuchsia); end; end; finally end; MyRect := Rect(center.x,center.y,center.x+32,center.y+32); if fileexists('DATA/TEMPLATES/'+ctype+'/char_'+character.gender+'.bmp') then begin Bitmap.LoadFromFile('DATA/TEMPLATES/'+ctype+'/char_'+character.gender+'.bmp'); end else begin Bitmap.LoadFromFile('IMG/Map/nochar.bmp'); end; form5.PaintBox1.Canvas.BrushCopy(MyRect,Bitmap,MyRect2,clfuchsia); {for i := 0 to 1000 do begin if NPCs[i].name <> '' then begin Bitmap.LoadFromFile(NPCs[i].smallpic); //MyRect := Rect((NPCs[i].x+center.x)*32,(NPCs[i].y*+center.y)*32,(NPCs[i].x+center.x)*32+32,(NPCs[i].y+center.y)*32+32); MyRect := Rect(i*32+center.x,ii*32+center.y,i*32+center.x+32,ii*32+center.y+32); form5.PaintBox1.Canvas.BrushCopy(MyRect,Bitmap,MyRect2,clfuchsia); end; end;} for iii := 0 to 1000 do begin if NPCs[iii].name <> '' then begin for i := -2 to 2 do begin for ii := -2 to 2 do begin if NPCs[iii].x = charx + i then begin if NPCs[iii].y = chary + ii then begin Bitmap.LoadFromFile(NPCs[iii].smallpic); MyRect := Rect(i*32+center.x,ii*32+center.y,i*32+center.x+32,ii*32+center.y+32); form5.PaintBox1.Canvas.BrushCopy(MyRect,Bitmap,MyRect2,clfuchsia); end; end; end; end; end; end; |
Re: Flackern auf einer Map verhindern...
Schon
Code:
eingestellt?
doublebuffered:=true;
|
Re: Flackern auf einer Map verhindern...
ja, also meine paintbox1 liegt auf:
Form5 => Groupbox1 (oder 2) => pbox1 ich habs sowohl bei der form, als auch bei der groupbox angemacht => nix :( |
Re: Flackern auf einer Map verhindern...
Also, ich habe es bei mir direkt ins OnCreate-Ereignis der Form geschrieben, bei mir flackert nichts.. Aber ich glaub da war noch was, was ich auch umgestellt habe, mir fällts aber im moment echt nich ein, ist ja auch schon spät :) Ich guck heut abend wenn ich aufwache nochmal, evtl. find ich was.
(Oder war es doch nur DoubleBuffered:=true? Naja, wie gesagt, ich guck dann nochmal) mfg Spessi |
Re: Flackern auf einer Map verhindern...
Zeichne alles auf ein Bitmap im Speicher und kopiere das dann mit BitBlt auf den Canvas der Paintbox.
|
Re: Flackern auf einer Map verhindern...
1. das TBitmap.Create VOR die zwei ineinander verschachtelten FOR Schleifen packen, das Bitmap wird immer wieder neu kreiert für jedes Map Tiles und das alte nicht freigegeben.
2. Ein Bitmap.Free am Ende der Procedure wäre auch nicht schlecht. 3. Du solltest die Bitmaps für jedes Tile Art im Speicher vorrätig lassen, die BMPs immer und immer wieder von der Platte auszulesen ist absoluter Käse, die Festplatte ist nicht ansatzweise so schnell wie der RAM Speicher. 4. Eine Map besteht eigentlich immer aus 3 Ebenen (Layer). Einmal der Map Untergrund der sich so schnell nicht ändern (sprich fast schon einmal zeichnen und gut is), dann der Items Layer der sich durch deine / NPC Interaktion ändern kann und letztendlich der Char Layer. Um bisschen Optimierung reinzukriegen, erstell eine Bitmap wo einmal (wenns gebraucht wird) die Map Tiles drauf gezeichnet werden und gut ist. Dann kannst Du deine Items und Chars über diesen Untergrund laufen lassen.. Ach ja, ich weiß Du wirst mich hassen, aber in deinem Interesse empfehle ich Dir: Lern ein bisschen OOP.
Delphi-Quellcode:
Vielleicht kannst Du so ein Zeug momentan noch machen, nur irgendwann wirste damit so richtig Probleme kriegen. Sieh es als Erfahrungs- und Weiterbildungschance an.
for iii := 0 to 1000 do begin
if NPCs[iii].name <> '' then begin |
Re: Flackern auf einer Map verhindern...
iss mir ja klar, dass es einige kritik gibt -> immerhin hab ich ja nach verbesserungen gesucht :)
also... wie soll ich denn dann die karte aufbauen, wenn es denn nach OOP laufen soll? bis jetzt isses "map: array[0..5000,0.5000] of TFeld" (oder so ähnlich) gut... wegen dem BitBlt: Die Funktion hoffe ich steht in der Delphi-Hilfe :) Und wie zeichne ich dann auf ein Bitmap im SPeicher? einfach bitmap.create und dann per canvas genauso die bilder draufhaun wie bei der paintbox per canvas (hätt ich mir jetzt mal so vorgestellt :gruebel: ) und wie soll ich dann die ganzen bilder zwischenspeichern? :( |
Re: Flackern auf einer Map verhindern...
Zitat:
Anderes Beispiel: Charaktere... Chars haben in den meisten RPGs Attribute wie Stärke, Intelligenz, Lebenspunkte, Mana, was weiß ich.. Diese 4 Beispiele wären innem Record einfach nur Variablen vom Typ Byte z.B. Nu haste ne Code Passage - meinetwegen im Programmcode für den Kampf, ein Char trifft den anderen mit nem Schwert - in der es heißt
Delphi-Quellcode:
Nu musst Du direkt danach darauf eingehen was dem anderen Char passiert. Stirbt er ? Kommt er in einen kritischen Bereich mit der Lebensenergie bei dem seine Stärke vllt halbiert wird ? Wenns Du es mit Records angehst, musst du bei JEDER Zuweisung einer Variablen selbstständig checken was im Anschluß darauf passiert. Mag bei dieser einen Passage schnuppe sein, weil das is dann ein Aufruf von einer Procedure hintendran mehr. Aber glaub mir, es wird nicht bei dieser einen Passage bleiben (Ich bin z.Zt. der Programmierteil von einem Ultima Online Freeshard (MMORPG), ich weiß wie dreckig anstrengend so ein Teil werden kann).
if DerAndereCharWurdeGetroffen then
DerAndereCharRecord.Lebenspunkte := DerAndereCharRecord.Lebenspunkte - 10; Nimm statt dessen lieber Klassen und statt Variablen Properties. Jedesmal wenn der Variable was zugewiesen wird, kannst Du in dem speziellen Fall drauf reagieren und musst das ganze nur einmal programmieren, sprich Ereignisorientiert programmieren, den Rest erledigt Delphi für Dich. Nächstes Beispiel: Wie ich schon sagte, alles was Du an Bitmaps hast EINMAL einladen, dann immer aus diesen Bitmaps zeichnen. Bei ner Klasse kannst schon gleich im Konstruktor die Bitmap einladen, im Destruktur wird sie freigegeben. Zwischendurch kannst immer druff zugreifen und brauchst Dich sonst um nichts kümmern. Nächstes Beispiel: Waffen, Items, Monster, alles Mögliche.. Man programmiert für die eine Grundgattung (meinetwegen Waffen) eine Basisklasse, sei es nun TBaseWeapon. Davon leitest Du die anderen Klassen ab, z.b. TBastardschwert. Wenn Du nun in der basisklasse das Grundverhalten von Waffen programmierst, wirkt sich das auf alle Nachfahren dieser Klasse aus, Du brauchst in deinem TBastardschwert nur vllt die Eigenschaften wie Schaden, Schadenstyp usw. ändern. Das wars. Was aber nun, wenn Du mit deinen Records ein Schwert hättest, was ein komplett anderes Verhalten hat als z.b. so nen Standard Schwert. Lass es ein vergiftetes Schwert sein, oder eins was gelb leuchtet un den Gegner in Flammen steckt. Du musst beim Schadenscode überall abchecken, welches Schwert benutzt wird und darauf reagieren. Dadurch wird dieser Programmcode lang, kompliziert und unübersichtlich. Mit meiner Methode würdest einfach ein TFlammenschwert von TBaseWeapon ableiten und eine Methode überschreiben, die den Schaden zufügt. Nächstes Beispiel: Interfaces Ein Interface in einer Klasse zu implementieren bedeutet, man Klassen ansprechen, die nicht von einander abgeleitet sind, bzw. einen gleichen Vorfahren besitzen. Bei Ultima Online (RunUO Server) gibbets ein Interface namens IEntity. Das beherbergt die Felder X, Y, Z, MapPlane (gibt verschiedene Maps dort). Dieses IEntity ist in der Basisklasse für Items und für Chars drinne. Ich könnte somit also einfach über dieses Interface gleichermaßen Items und Chars ansprechen, ohne mit der Wimper zu zucken was ich da nun eigentlich verschiebe. Mit Records musst Du entweder erstmal überladene Proceduren machen, die entweder Items oder Chars als Parameter annehmen ODER aber Du musst eine allgemeine Procedure machen und dann in dieser Procedure nachchcecken was Du eigentlich verschiebst und dann darauf reagieren. Ich weiß Du siehst momentan nicht wirklich den Sinn dahinter, warum Du auf OOP umsteigen solltest und ich muss auch eingestehen, ich weiß noch nit wie fortgeschritten dein Spiel ist. Aber ich weiß GANZ GENAU, sobald das Ding an Komplexität zunimmt die über hin und her gehen und Chars anschnacken hinausgeht, wirst Du Dich vor lauter IF-Bedingungen nicht mehr retten können, solltest Du auf der Records-Schiene draufbleiben. Drum tu Dir selbst ein Gefallen, wechsel auf Klassen. Wenn erstmal das Spiel komplex ist, kannste das knicken, dann stampfst Du alles ein und fängst von vorne an weil Du kein Land mehr siehst. - Thebe |
Re: Flackern auf einer Map verhindern...
vielen dank!! hat mir sehr geholfen! :top:
nur... ich hab mit klassen sehr wenig erfahrung.. :( was meien map anbelangt sollte sie so bleiebn, wenn ich richtig gelesen hab... und das mit den if-gewurschtel ist schon passiert (noch blick ich noch durch! :D ) das mit den bitmaps würde ich mir dann so vorstellen, dass ich einen array mach und in den dann alle (bekannten) bilde reinlad, bzw. dann eben ausles. richtig so? yo... |
Re: Flackern auf einer Map verhindern...
in etwa
wenn Du mir noch sagst welche "Felder" in dem Record für deine Map und deine Chars drinne is kann ich Dir nen Beispiel schreiben wie man da sehr schön was draus mit ner Klasse machen kann.. |
Re: Flackern auf einer Map verhindern...
TFeld:
Delphi-Quellcode:
und die map-variable ist die:
TFeld = record
mapname: string; // Map-Name bgmusic : string; // Die Hintergrundmusik - falls nix, keine Änderung x: Integer; // X-Koordinate y: Integer; // Y-Koordinate Textur : String; // Texturpfad für das Feld Textur2 : String; // 2. Texturen-Ebene Textur3 : String; // 3. Texturen-Ebene (über Held) Begehbar : boolean; // Kann man auf dem Feld laufen oder nicht Teleportx : integer; // Datentyp der die X,Y Koordinate enthält auf welches Teleporty : integer; // Feld teleportiert wird (0/0) für kein Teleportfeld Ereignis1 : string; Ereignis2 : string; maxsizex,maxsizey : integer; startx,starty : integer; end;
Delphi-Quellcode:
map : array[0..1001,0..1001] of TFeld; // maximale Feldanzahl: 1.002.001
|
Re: Flackern auf einer Map verhindern...
Schreib mich mal per ICQ an, UIN is ... oder per eMail ...
Ich werd Dir mal nen bisserl Stütze geben. [edit=sakura] Antworten bitte ins Forum, da sind diese hilfreich für alle ;) Mfg, sakura[/edit] |
Re: Flackern auf einer Map verhindern...
hi leutz!
Ich hab jetzt den Ratschlag befolgt, jedes Bild vorher in einen Array zu laden, damit dieses nicht immer von der Festplatte geholt werden muss. Mein Lösungsansatz: Ich lade lasse das Program erstmal alle Dateien, die mit .bmp aufhören aus diesem Ordner in eine TStringList oder TStrings einlesen. Danach werde ich diese Dateien dann Zeile für Zeile in das Array laden. Bevor ich mein Problem beschreibe, erstmal der Code der Auslesefunktion und dann auch gleich der Fehler ;)
Delphi-Quellcode:
So (versuche) lese ich ein:
// Code entnommen der Codedatenbank "Easy Delphi Helper" ([url]www.delphi-source.de[/url])
procedure GetFilesInDirectory(Directory: String; const Mask: String; List: TStrings; WithSubDirs, ClearList: Boolean); procedure ScanDir(const Directory: String); var SR: TSearchRec; begin if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then try repeat List.Add(Directory + SR.Name) until FindNext(SR) <> 0; finally FindClose(SR); end; if WithSubDirs then begin if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try repeat if ((SR.attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then ScanDir(Directory + SR.Name + '\'); until FindNext(SR) <> 0; finally FindClose(SR); end; end; end; begin List.BeginUpdate; try if ClearList then List.Clear; if Directory = '' then Exit; if Directory[Length(Directory)] <> '\' then Directory := Directory + '\'; ScanDir(Directory); finally List.EndUpdate; end; end;
Delphi-Quellcode:
Gut...
var sl: TString; //oder eben TStringList - immer der die gleiche Fehlermeldung...
if high(maptiles) > 0 then for ii := 0 to high(maptiles) do begin maptiles[ii].FreeImage; // um vorher die Images aus dem Array zu "entleeren" - stimmt das so? end; GetFilesInDirectory(ExtractFileDir(Application.ExeName)+'\IMG\Map\', '*.*', sl, False, True); // Hier sitzt der Fehler! und hier die Fehlermeldung:
Code:
Gut... ne, schlecht...
---------------------------
Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Xiphoid.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004956F6 in Modul 'Xiphoid.exe'. Lesen von Adresse 0000004C'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- wenn ich jetzt den Teil "GetFilesInDirectory" auslasse, dann funktioniert alles prima (nur er lädt eben die Dateien nicht in die Strinlist ;) ) Wenn ich die Funktion jetzt aber in eine TStringBox laden lasse, dann funktioniert alles prima....... Arrrgh, ich verzweifle! PS: @thebe: ja, wer dich machen, sobald ich zeit hab! :) |
Re: Flackern auf einer Map verhindern...
Hi,
hast Du "sl" vor dem Aufruf von GetFilesInDirectory überhaupt erstellt (also sl := TStringList.Create) ? mfG mirage228 |
Re: Flackern auf einer Map verhindern...
schätze auch mal das SL nicht initialisiert wurde.
Nun, Sakura hat ja im Endeffekt recht, also nehmen wir den umständlichen Weg übers Forum..
Delphi-Quellcode:
TFeld = record
mapname: string; // Map-Name bgmusic : string; // Die Hintergrundmusik - falls nix, keine Änderung x: Integer; // X-Koordinate y: Integer; // Y-Koordinate Textur : String; // Texturpfad für das Feld Textur2 : String; // 2. Texturen-Ebene Textur3 : String; // 3. Texturen-Ebene (über Held) Begehbar : boolean; // Kann man auf dem Feld laufen oder nicht Teleportx : integer; // Datentyp der die X,Y Koordinate enthält auf welches Teleporty : integer; // Feld teleportiert wird (0/0) für kein Teleportfeld Ereignis1 : string; Ereignis2 : string; maxsizex,maxsizey : integer; startx,starty : integer; end; Was mir erstmal stark auffällt, Du hast da ziemlich viel unnützes Zeug drinne. Wenn ich mal die benötigte Größe der Variablen zusammen rechne und mit der Größe der Map multipliziere (ich bin mit davon ausgegangen, daß die Strings 255 Byte beanspruchen, kann ja ne Menge mal drinne sein) dann kommst Du auf knapp 1,8 GB Speicher benutzung für die Map. Wollen wir uns mal die Variablen durchgucken. Mapname: Was ist das ? Der Name des Tiles auf dem man steht ? Soll da denn "Pflasterboden" oder "Sandboden" stehen ? Kann man alles zentralisieren, da belegt es nur einmal den Platz. BGMusic: Schätze mal Pfad zu ner MIDI Datei, nur wieso ? Die Musik wird sich nicht bei jedem Feld ändern, da isses sinnvoll man programmiert sich Regionen, in denen eine bestimmte Midi Musik abgespielt wird. X, Y: Sind vom Typ integer, da man maximal bis 1001|1001 gehen kann, isses recht unsinnig da für jede Variable jeweils 2 Byte übern Haufen zu schmeißen. Wenn ichs mir sogar noch recht überlege, dann sind die beiden Variablen eh nutzlos, weil du die X/Y Koordinaten auf dem Char speichern kannst bzw. für die X/Y Koordinaten ja aufs Feld im Array zugreifst -> Müll. Textur1, Textur2, Textur3: Sind alles Pfadnamen, was mehr als daneben ist. Da kannste eher die Bilder als Hexadezimale Nummern abspeichern, z.b. "0F2A.bmp" und dann damit drauf zugreifen, da haste dann insgesamt nur 6 Byte für alle drei Variablen. Begehbar: 8 Bit benötigt um eigentlich nur 1 Bit zu benutzen. Da würd ich Dir zu ner Bitmaske raten, z.b. werden bei MaxSizeX/Y, StartX/Y, TeleportX/Y nur maximal 10 von 16 bits (nach meinem Vorschlag s.u.) verwendet. Wenn Du das eine Bit da drinne mit versteckst, wird sich niemand beklagen. Mit der Methode hast Du übrigens dann gleich Platz für 35 andere True/False Konditionen, die Du nicht extra abspeichern musst. TeleportX/Y: Siehe oben, da brauchst Du auch maximal pro Variable ein Word und kein Integer. Auch wenn ich die Methode ziemlich daneben finde das so zu machen, isses erstmal eine gute Variante da Du keine Items/Item Events programmiert hast womit man das eher machen könnte. Ereignis1/2: keinen blassen Schimmer was Du anhand von Strings machen möchstes, deshalb kann ich da keine Vorschläge machen. MaxSizeX/Y, StartX/Y: ich denke nicht daß Du die Dinger brauchst, aber ich würde auch hier statt nem Integer ein Word nehmen. Erstmal soviel dazu. Zeig doch mal nen paar Bilder von dem was Du schon hast, oder noch besser das Projekt in der momentanen Verfassung. Da kann man dann noch besser druff eingehen. |
Re: Flackern auf einer Map verhindern...
Zitat:
JEDES mal, aber auch wirklich JEDES MAL denk ich dran, dass ich das initialisiere und dann... WENN ICH ES EINMAL BRUACHE - NICHTS! arrrgh.... danke! ;) Zitat:
Zitat:
ja, iss ne musikdatei (zumindest der pfad - und nicht nur midi ^^ ) ==> wie kann ich eigentlich eine *.mp3-datei "gut" abspielen - ich benutz gerade den weg über ne eingebettete Microscrott Windoof Mediaplayer komponente :roll: Zitat:
PS: wird auch im charakter gespeichert ;) Zitat:
soll ich dann die hex-namen in buchstaben konvertieren oder . . . Zitat:
Zitat:
dann wird eben ausgelesen aus dem string per "copy", etc... und bla bla bla ;) (mir iss nix besseres eingefalln, schulligung! ;) ) Zitat:
Zwecks den Bildern: Ich zeig euch mal ein paar (zur zeit leider nur 1, da andere sich um andere themen kümmern), bedenket jedoch, dass ich das design gegebenermaßen komplett umdesignen werde (also nicht nur 5x5 mapfelder, sondern 7x7 oder so...) UND: es soll ein spiel sein für *etwas* ältere rechner ;) "dem stiefvater gewidmet" ^^ (hab jetzt speziell nur unser themengebiet gepostet ;) ) ![]() |
Re: Flackern auf einer Map verhindern...
Ich weiß jetzt nicht wie weit du schon bist, aber wenn du alles auf Klassen umstellst und auf diese Art "noch mal neu anfängst" oder auch für andere die mit sowas anfangen wollen:
Schau dir mal DelphiX an! Da müsstest du zwar immer noch die Klassen entwerfen (und dein Map-Array würde das auch nicht groß beeinflussen) aber gerade beim Zeichnen wird dir da viel abgenommen (kein Flackern; du kannst Bilder in die ImageList vorladen; die Dinger werden von der SpriteEngine gezeichnet; ...) Außerdem gibts dafür extrem viele Tutorials. Ich glaub hier gabs sogar schon mal ne Frage wie man das in einem RPG einsetzt. [Edit] Hab grad nochmal gesucht aber nicht das gefunden was ich gemeint hatte. Trotzdem sind die Suchen wie ![]() ![]() ![]() ![]() ![]() [/Edit] |
Re: Flackern auf einer Map verhindern...
DelphiX?
mmh... ich hab ne personal von D7 :( schade, dass es bei mir net funzt... trotzdem danke! das mit dem neu anfangen muss ich ja dann sowieso ;) |
Re: Flackern auf einer Map verhindern...
Es gibt soweit ich weiß auch irgendwo eine Version von DelphiX, die mit D7 läuft. (Ich hatte die auch schon mal ...)
*such* ![]() Zitat:
|
Re: Flackern auf einer Map verhindern...
Kann es sein, dass UnDelphiX gerademal 2,1 mb groß ist?
wenn nicht, dann bitte direkten DLl-Link Danke! :thumb: so... jetzt hab ich mir schon gedanken gemacht: Kann man mit dem DelphiX das jetzt auch so machen, dass man die Karte so oft aktualisiert, dass man den Helden bei Tastendruck/etc. auch um jeden einzelnen Pixel versetzt? Wär kewl, also so Diablo/Sacred/DivineDivinity mäßig :stupid: |
Re: Flackern auf einer Map verhindern...
2,95 MB sinds bei mir (
![]() Zitat:
|
Re: Flackern auf einer Map verhindern...
Sag mal, hat das überhaupt noch was mit dem ursprünglichen Thema zu tun? Jetzt fragst du nach Bitmasken, wie man MP3s abspielt, wie deine Klasse am besten aufgebaut sein soll usw. Eventuell sollte man das Topic in "Wir programmieren zusammen ein Rollernspiel" umbenennen.
Es sollte eigentlich bekannt sein, dass für jede neue Frage auch ein neuer Thread aufzumachen ist. |
Re: Flackern auf einer Map verhindern...
Zitat:
mmh.. gut... tutos gibts ja bestimmt genug, da such ich mir noch eins raus :) // EDIT: arbeitet UNDelphiX genauso wie DelphiX - also die gleichen tutos? @luckie: nunja, das waren ja nur nebenfragen, die ja nicht beantwortet werden müssen/sollen (und die gibts in so ziemlich jeden thread). Ich werd schon ein neues Thema aufmachen, wenns denn wirklich brenzlich wird :) @alle: Gut, ich werd das dann mal mit (Un)DelphiX ausprobieren. Wenn es Fragen gibt, dann werden die hier sich rgestellt. :) Nochmals danke! ;) |
Re: Flackern auf einer Map verhindern...
Zitat:
(Ich hab sie gestern auch auf meinem D7 PE installiert) Zitat:
@luckie: Immerhin hilft doch DelphiX das Flackern bei der Map zu verhindern ;-) |
Re: Flackern auf einer Map verhindern...
k, es funzt bei mir :)
Tutos werd ich dann alleien suchen - somit wärs dann ende erstmal, THX! ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 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