Текущий архив: 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.45 MB
Время: 0.058 c