Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

Почему такой код в DelphiX не работает?   Найти похожие ветки 

 
Просто_Я   (2006-02-28 23:02) [0]

Вот выводит черный экран. Не понимаю в чем дело. Я правда только начал разбираться с DX, так что извините за ламерский вопрос
type TBackground = class (TBackgroundsprite)
public

end;
var sbackground:tbackground;

procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
SBackground := TBackground.Create (DXSpriteEngine1.Engine);
with SBackground do
begin
  image := DXImageList1.Items.Find("image1");
  image.Transparent := false;
  SetMapSize(4,4);
  Z := -10;
  for i := 0 to 3 do
     for j := 0 to 3 do
        Chips[j,i] := 0;
  Tile := true;
end;

end;

Спасибо


 
KreeS ©   (2006-03-01 01:22) [1]

Сначала хотябы попробуй изучить примеры, идущие в комплекте с DelphiX
Код который ты написал за само рисование не отвечает :)


 
JUS ©   (2006-03-01 14:47) [2]

изучай примеры


 
Cash ©   (2006-03-01 15:02) [3]

Умиляет еще один факт:
Зачем наследовать класс, если нет намерения его модифицыровать?

Кто нибудь сможет ответить?


 
Просто_Я   (2006-03-01 22:15) [4]

Вот почитал примеры, спасибо за совет, вроде все рисуется, но хочется сделать движущийся тайловый фон, что для этого следует сделать.
Вот прога.
Что следует написать в TBack.DoMove, как заставить прорисоваться нужные ячейки (вряд ли DoDraw)?

 type
TBack = class(TBackGroundSprite)
public
     procedure DoMove(MoveCount: Integer); override;
end;

var
 Form1: TForm1;
  Back: TBack;
implementation

{$R *.dfm}

procedure TForm1.DXDraw1Initialize(Sender: TObject);
begin
//Activate Timer
DXTimer1.Enabled := True;

end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update;
DXSpriteEngine1.Move(1);

DXSpriteEngine1.Draw;

DXDraw1.Flip;
end;

procedure TForm1.FormCreate(Sender: TObject);

var
i,j: Integer;
begin

randomize;
Back := TBack.Create (DXSpriteEngine1.Engine);
with Back do
begin
  image := DXImageList1.Items.Find("back");
  image.Transparent := false;
  SetMapSize(4,4);
  Z := -10;
  for i := 0 to 3 do
     for j := 0 to 3 do
        Chips[j,i] := random(2);
  Tile := false;
end;

end;

procedure TBack.DoMove(MoveCount: Integer);
begin
X := X - 5;

end;


 
Просто_Я   (2006-03-01 23:13) [5]

Точнее вопрос такой, берем проходим по ширине и высоте (вложенные циклы) и как нарисовать нужную ячейку в нужном месте (это вроде делается BitBlt, но я не понимаю аргументы)  ?
Мне отрисовывать советовали так
type
Camera = record
  X, Y, //верхний-левый угол камеры на карте
  W, H, // ширина, высота камеры (все в ячейках)
  Speed: Integer;
end;

там где отрисовываешь карту...
for i := Camera.Y to Camera.Y+Camera.H do
for j := Camera.X to Camera.X+Camera.W do
  нарисовать_ячейку(i, j);

а когда жмешь на стрелки делай...
Camera.X := Camera.X + Camera.Speed;

Где отрисовывать карту. Сделать процедуру Back.Draw что-ли? Тогда где ее вызывать или она автоматом вызывается DXSpriteEngine?
Помогите, пожалуйста.



Страницы: 1 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
15-1165826256
zdm
2006-12-11 11:37
2006.12.31
Перенос параметров


4-1156501872
Тфьу
2006-08-25 14:31
2006.12.31
Как отловить ошибку макроса Excel?


15-1165870136
Petr V. Abramov
2006-12-11 23:48
2006.12.31
Изучаю программирование сетей :)


15-1165089940
Cyrax
2006-12-02 23:05
2006.12.31
Java - это же не Yava...


15-1164733693
VictorT
2006-11-28 20:08
2006.12.31
И на RC-форумах бывает прикольный стёб :D