Entwickler-Ecke
Multimedia / Grafik - DelphiX
Borlox - Mo 02.12.02 00:09
Titel: DelphiX
Hi Leute,
ich möchte eine Person von einer Seite zur anderen laufen lassen! Bisher habe ich es mit DelphiX und der Draw-Funktion gemacht, aber es flakert immer wenn ich ein neues Bild (BMP) lade! Kann ich das irgendwie verbessern, oder gibt es eine bessere Möglichkeit das zu realisieren??
DANKE
Borlox - Mo 02.12.02 17:29
Titel: Kenne ich
Das habe ich mir schon einmal angesehen und durchgelesen, aber genau nach diesem Muster ist mein Programm aufgebaut und es flakert immer noch!
Sephiroth - Di 03.12.02 09:20
Arbeitest du wirklich mit sprites? Weil du da oben gemeint hast das du mit der draw-funktion arbeitest...
Borlox - Di 03.12.02 20:32
Titel: Draw
Ich habe gedacht man kann Animationen sehr viel leichter mit Sprites machen, oder ist das falsch????
Wie würdest du das denn machen?????
Sephiroth - Mi 04.12.02 09:05
Also ich arbeite bisher nur mit Sprites... Auch die Animationen. Die Draw-Funktion benutz ich nur um irgendwo Text auszugeben oder ein Spielelogo im z.B. Hauptmenü zu malen.
Arbeitest du nun mit der Draw-Funktion oder mit Sprites?
Borlox - Mi 04.12.02 15:46
Titel: Draw
Ich habe gedacht, man muss etwas auf die DXDraw-Komponente zeichnen, wie z.B. eine BMP oder mit der Sprite Komponente eine Animation! Ich wollte nur wissen, was für die Leistung besser ist, wenn ich die BMP`s einfach alle hintereinander zeichne, oder das mit der Sprite funktion mache???
fcg - Mi 04.12.02 19:04
machs mit sprites. dat läuft besser.
und dann machste das halt mit nem timer
DXSpriteEngine1.draw; usw.
Borlox - Mi 04.12.02 19:10
Titel: Draw
Gut, dann werde ich das damit mal versuchen:DXSpriteEngine1.draw;
Kann man eigentlich zu der Komonente nachträglich vom Programm sachen ändern lassen? Also ich meine andere Sprites einfügen und löschen???? Wie geht das?
Danke
Sephiroth - Do 05.12.02 09:20
Also mit Sprites ist das so:
Zuerst musst du ein Object vom Typ: TImageSprite deklarieren (also zumindest benutz ich das immer)
Dann kannst du diesem Objekt verschiedene Ereignisse zuordnen, u.a. Das Create-ereigniss
In diesem Ereigniss sagst du dann wo das Objekt erscheinen soll und welches Bild es haben soll. Und jetzt kommen wir zu deiner Frage:
Lassen sich Sprites einfügen und löschen?
Ja! Man kann das eine Objekt jeder Zeit tausendfach erstellen und mit
Objekt.Dead;
Wird es wieder gelöscht....
Wenn du jetzt nix verstanden hast dann sag das ruhig... Ich werd mich dann bemühen es mit Beispielen zu erklären, hab nur im Moment nicht genug Zeit dafür.
Borlox - Fr 06.12.02 14:24
Titel: Sprite
Habe ich schon alles verstanden, aber kann ich auch noch nachträglich Bilder in den Spritemanager einfügen und entfernen?
Sephiroth - Fr 06.12.02 15:14
Spritemanager? Meinst du diese Sprite-Komponente?
Die ist nicht dafür da um da Sprites einzufügen oder sowas, falls du das meinst.... Die ist nur dafür da um auf die ganzen Objektklassen zurückgreifen zu können
Die Bilder erhalten die Sprites von der DelphiX-ImageList... Diese werden z.b. in dem Createerigniss des jeweiligen Objektes zugeordnet...
Jedes Sprite von der Klasse TImageSprite hat z.B. die eigentschaft
Objekt.Image
Ist das verständlich was ich da schreib? Noch fragen?
Wenn Beispiele haben möchtest dann versuch ich welche am Sonntag zu posten...
Borlox - Fr 06.12.02 16:53
Titel: Sprite
Ja, ich meinte die Sprite-Komponente!
Was sind denn eigentlich Objektklassen und was kann ich mit denen machen?
Sephiroth - Fr 06.12.02 17:09
Also wenn du ein Sprite erstellen möchtest dann musst du es von einer anderen Klasse (bzw. Objektklasse) abstammen lassen.
Sobald du die TSprite-Komponente von DelphiX auf deinem Formular plazierst hat dein Projekt einige neue Klasse.
Ein Objekt erstellst du dann etwa so:
Quelltext
1:
| TPlayer = class(TImageSprite); |
So nun kannst du mit TPlayer einiges machen....
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var Form1: TForm1; Player: TPlayer;
Player:= TPlayer.Create(DXSpriteEngine1.Engine); Player.Image := Form1.DXImageList1.Items.Find('Spieler'); Player.X := 0; Player.Y := 0; Player.Width := Player.Image.Width; Player.Height := Player.Image.Height; |
Mit diesem Code würdest du ein Sprite erstellen das an der Position 0,0 auf deinem DxDraw erscheinen würde. Voraussetztung ist das in der ImageList ein Image mit dem Namen "Spieler" vorhanden ist.
In deinem Timer müsste dann folgendes stehen:
Quelltext
1: 2: 3: 4: 5: 6:
| DXSpriteEngine1.Move(1); //Schwarzen Hintergrund setzten DXDraw1.Surface.Fill(0); DXSpriteEngine1.Draw; DXDraw1.Flip; |
Aber das steht alles auch im DelphiX-Kurs auf
http://www.delphi-treff.de (genauer Link steht weiter oben)
Weitere fragen?
fcg - Sa 07.12.02 12:37
ich denke du hast dir dat schon mla angeschaut :?:
Borlox - So 08.12.02 15:55
Titel: Stimmt
Stimmt, das habe ich schon mal ausprobiert, aber ich bin leider nur bis zu den Sprites gekommen, da dieser Teil bei mir einfach nicht funktionieren will! Ich habees schon 20 mal ausprobiert, immer genau nach Tutorial, aber es hat nie funktioniert!
Hat vielleicht jemand einen laufenden Sourcecode?
Danke
Sephiroth - Mo 09.12.02 09:08
Ja hab ich, aber nur daheim... Ich werd versuchen ihn heute abend mal raus zu kruschteln und ihn dir dann schicken...
Borlox - Di 10.12.02 21:19
Titel: Danke
Danke, das würde mir echt helfen!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!