Autor Beitrag
DT2158
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: Sa 27.12.03 16:18 
Hallo, verwende DelphiX

Hier mein code!

ausblenden volle Höhe Delphi-Quelltext
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:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, StdCtrls, DXDraws, DXClass, Menus, DXSprite,
  ImgList;

type
  TMainform = class(TForm)
    Panel: TPanel;
    StatusBar: TStatusBar;
    but_start: TButton;
    DXTimer: TDXTimer;
    GroupBox_Objects: TGroupBox;
    MainMenu: TMainMenu;
    menu_file: TMenuItem;
    menu_exit: TMenuItem;
    menu_options: TMenuItem;
    menu_velocity: TMenuItem;
    menu_priority: TMenuItem;
    N1: TMenuItem;
    Vektoren1: TMenuItem;
    Bahnen1: TMenuItem;
    Gitter1: TMenuItem;
    N2: TMenuItem;
    Info: TMenuItem;
    Volllbild1: TMenuItem;
    menu_fullscreenW: TMenuItem;
    N3: TMenuItem;
    RealTime1: TMenuItem;
    Hoch1: TMenuItem;
    Hheralsnormal1: TMenuItem;
    Normal1: TMenuItem;
    NiedrigeralsNormal1: TMenuItem;
    Nierig1: TMenuItem;
    edit_posx: TEdit;
    edit_posy: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label2: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit1: TEdit;
    Label9: TLabel;
    Label10: TLabel;
    but_physical_info: TButton;
    Edit2: TEdit;
    Label11: TLabel;
    Label12: TLabel;
    N4: TMenuItem;
    Neu1: TMenuItem;
    ImageList: TImageList;
    DXImageList: TDXImageList;
    DXSpriteEngine: TDXSpriteEngine;
    DXDraw: TDXDraw;
    procedure but_startClick(Sender: TObject);
    procedure DXTimerTimer(Sender: TObject; LagCount: Integer);
    procedure menu_fullscreenWClick(Sender: TObject);
    procedure but_physical_infoClick(Sender: TObject);
    procedure menu_exitClick(Sender: TObject);
    procedure InfoClick(Sender: TObject);
    procedure DXDrawInitialize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TObjekt = class(TImageSpriteex)
  private
  public
    constructor Create(AParent: TSprite); override;
  end;

  TBack = class(TBackGroundSprite)
  end;

var
  Mainform: TMainform;
  Back: TBack; 
  Objekt: TObjekt;
  ThreadID: DWORD;
  ThreadHandle: THandle;

implementation

uses grav, info;

{$R *.dfm}


constructor TObjekt.Create(AParent: TSprite);
begin
  inherited Create(AParent);
  Image := Mainform.DXImageList.Items.Find('Planet');
  X := 20;
  Y := 30;
  Z := 0;
  Width := Image.Width;
  Height := Image.Height;
  Visible:=True;
end;

procedure simulate;
begin
 with Mainform do
 begin
  //DXDraw.Surface.Canvas.Font.Color:=clwhite;

 end;
 EndThread(0);
end;

procedure TMainform.but_startClick(Sender: TObject);
begin
  DXTimer.Enabled := true;

 //ThreadHandle := BeginThread(nil, 0, @simulate, nil, 0, ThreadID);
end;

procedure TMainform.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin
 DXSpriteEngine.Move(1);
 DXDraw.Surface.Fill(0);

 //DXSpriteEngine.Dead;
 DXSpriteEngine.Draw;
 //DXDraw.Surface.Canvas.Brush.Color := clWhite;
 //DXDraw.Surface.Canvas.Ellipse(100,100,50,50);
 DXDraw.Surface.Canvas.font.color:=clAqua;
 DXDraw.Surface.Canvas.brush.style:=bsclear;
 Statusbar.Panels[0].Text := 'FPS: ' + Inttostr(dxtimer.FrameRate);
 DXDraw.Surface.Canvas.Release;
 DXDraw.Flip;
end;

procedure TMainform.menu_fullscreenWClick(Sender: TObject);
begin
 if Mainform.WindowState = wsNormal then
 begin
  Mainform.WindowState := wsMaximized;
  menu_fullscreenW.Checked := true;
 end
 else if Mainform.WindowState = wsMaximized then
 begin
  Mainform.WindowState := wsNormal;
  menu_fullscreenW.Checked := false;
 end;
end;

procedure TMainform.menu_exitClick(Sender: TObject);
begin
 Application.Terminate;
end;

procedure TMainform.InfoClick(Sender: TObject);
begin
 Infoform.ShowModal;
end;

procedure TMainform.DXDrawInitialize(Sender: TObject);
begin
 Objekt := TObjekt.Create(DXSpriteEngine.Engine);
end;

procedure TMainform.FormCreate(Sender: TObject);
begin
 Back := TBack.Create(DXSpriteEngine.Engine);
 Back.SetMapSize(1,1);
 Back.Image := DXImageList.Items.Find('Background');
 Back.Z := -1;
 Back.Tile := True;
end;

end.


ein paar stellen sind auskommentiert weil ich den fehler net finde!!
es gibt keine fehler meldungen!

1. die sprites werden nicht angezeigt, ka wieso

2. der dxtimer funktioniert nicht wenn er schon von anfang an "an" ist, er von oncreate oder on initialize gestartet wird.

Das ging zum anfang mal!! jetzt muss den timer per button aktivieren, dann läuft er, sprites allerdings gehen gar nicht (1), canvas und so gehen aber!

Danke! :roll:
DT2158 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: Sa 27.12.03 23:02 
1.so die sprites erscheinen jetzt wenn ich das einmal Fenster resize, komisch

2.das problem mit dem nicht timer besteht weiterhin

3. wann wird das ereignis oninitialize und onfinalize ausgeführt? nicht das sich aus den beiden der timer nicht anschalten lässt, diese werden anscheinend nie ausgeführt!? :x :oops:
Da_Knuddelbaer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Di 30.12.03 11:53 
Hi DT2158,

ich habe deinen Code mal bei mir getestet und ein paar für mich unnnötige Sachen entfernt und habe festgestellt, dass es bei mir wunderbar funktioniert. Ich benutze UnDelphiX 7, aber das ist ja direkt kompatibel mit DelphiX :wink:

Wenn du willst schicke ich dir meine Projekt-Dateien von deinem Beispiel per Mail zu. Im übrigen benötigst du die Klasse Back nicht, ein BackgroundSprite kann auch ohne sie erstellt werden.

Mögliche Fehlerquellen:
ImageList ist nicht auf DXDraw angewendet
SpriteEngine ist nicht auf DXDraw angewendet

Ansonsten könntest du vllt mit dem Timer irgendwas falsch eingestellt haben so dass du erst per Button da was siehst. Wie gesagt, ich kanns dir gerne zuschicken :)

Greetz,
Knuddelbaer