| Autor |
Beitrag |
pichunter
      
Beiträge: 40
Win XP prof.
Delphi 7, C/C++ (VS 2003 - kotz)
|
Verfasst: Mi 02.08.06 11:53
Ich kann ja mit DelphiX und DoMove Objekte bewegen.
(z.B. var Boden: TBoden;)
Wenn ich aber mehrere dieser 'Boden' erstelle, und dann bewegen lassen will, bewegt sich nur das zuletzt erstelle 'Boden'.
Ich würde aber gerne alle 'Boden' bewegen, ohne für jedes 'Boden' eine eigene Variable deklarieren zu müssen.
|
|
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Mi 02.08.06 14:10
meines wissen nutzt du warscheinlich die Sprit engine von DelhpiX schau mal bei der nach ob es eine liste von allen sprits gibt wenn ja könntes du evlt. folgendes machen:
for i:=0 to SpritCount do
if SpritEngine.engine[i] is TBoden then
SpritEngine.engine[i].move(...)
weiß du worauf ich hinaus möchte ? wenn nicht schau mal bei den beispiel anwendungen bei DelphiX da sind zwei beispiele dabei die sehr viele sprit bewegen müssen !
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
pichunter 
      
Beiträge: 40
Win XP prof.
Delphi 7, C/C++ (VS 2003 - kotz)
|
Verfasst: Mi 02.08.06 15:59
hab da nicht wirklich was gefunden. Das einzige war DXDraw.ScrollBy... Das braucht ein DeltaX und ein DeltaY.
Und wie ichs mir schon gedacht hatte, hat das nicht so geklappt. Ich kann damit zwar alles bewegen, aber beim nächsten Frame springt alles wieder in die ausgangsposition.
Und wenn ich as noch beim ende des Timers einbaue, dann fängt das alles lustig an zu flimmern.
|
|
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Mi 02.08.06 16:38
arbeites du mit der TSpritEngine von DelphiX ?
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
pichunter 
      
Beiträge: 40
Win XP prof.
Delphi 7, C/C++ (VS 2003 - kotz)
|
Verfasst: Do 03.08.06 11:54
Jop. Liegt das daran? Bzw., gibts da ne bessere alternative?
hier mal mein bisheriger Code
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DXClass, DXSprite, DXInput, DXDraws;
type TForm1 = class(TForm) DXDraw1: TDXDraw; DXImageList1: TDXImageList; DXInput1: TDXInput; DXSpriteEngine1: TDXSpriteEngine; DXTimer1: TDXTimer; procedure FormCreate(Sender: TObject); procedure DXTimer1Timer(Sender: TObject; LagCount: Integer); private public end;
type TBoden = class(TImageSprite) public Procedure DoMove(MoveCount: Integer); override; end;
var Form1: TForm1; Boden: TBoden;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Boden:= TBoden.Create(DXSpriteEngine1.Engine); with Boden do begin image:= DXImageList1.Items[0]; width:= Image.Width; height:= Image.Height; x:=50; y:=50; z:=0; end;
Boden:= TBoden.Create(DXSpriteEngine1.Engine); with Boden do begin image:= DXImageList1.Items[0]; width:= Image.Width; height:= Image.Height; x:=50; y:=50; z:=0; end; end;
procedure TBoden.DoMove(MoveCount: Integer); begin inherited DoMove(MoveCount); if (isup in Form1.DXInput1.States) then end;
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin DXInput1.Update; DXDraw1.Surface.Fill(clblack); DXSpriteEngine1.Dead; DXSpriteEngine1.Draw; DXSpriteEngine1.Move(20); DXDraw1.Flip; end;
end. |
Für den Boden habe ich als Image ein Quadrat in der ISO-Ansicht, könnte aber auch ein anderes Bild sein.
Vielleicht hilft das ja weiter.
|
|
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Do 03.08.06 21:20
du erstellst ja auch nur ein objekt bei FormCreate lass das mal in einer forschleife durchlaufen mit zufälligen position angeben.... wenn das nicht geht häng mal dein projekt als anhang dran und die deine delphiX(hast du delphi 7)
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
pichunter 
      
Beiträge: 40
Win XP prof.
Delphi 7, C/C++ (VS 2003 - kotz)
|
Verfasst: Do 03.08.06 21:33
Ja, ich benutze Delphi 7 und halt das entschprechene DelphiX.
Gibt es eigentlich eine Pixelkollision die auf Farben reagiert? Wäre damit etwas leichter. Dann könnte man die Map als ein Bild haben und (z.B. lila) soll als wand fungieren.
|
|
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Do 03.08.06 22:28
ob die auf farbe reagiert weiß ich nicht aber es gibt sowas.... ich weiß allerdings nicht genau wo... sende mir mal deine delphiX version und dein programm: mimi_17@gmx.de
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|