PDA

View Full Version : mouse sprite



WiZz
13-05-2004, 07:59 PM
i am writing a simple adventure game. i decided to use sprite for mouse cursor, but it is not shown.

firstly i create a new class:
TMouseCursor = class(TImageSprite);

Secondly:
var
MouseSprite: TMouseCursor;

Thirdly:
onCreate event,
MouseSprite := TMouseCursor.Create(DXSpriteImage1.Engine);
MouseSprite.Image := DXImageList1.items.items[0];

fourthly:
onMouseMove event
MouseSprite.x := x;
MouseSprite.y := y;

what i am doing wrong? why cursor is not visible?

Traveler
14-05-2004, 12:08 PM
not sure, your code isn't very detailed. But you could try something like this:


var
Form1: TForm1;
mouseImg: TDirectDrawSurface;
mouse_X, mouse_y : word;

implementation

{$R *.DFM}

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
DXDraw1.surface.fill(0);
DXDraw1.Surface.Draw(mouse_X, mouse_y, mouseImg.ClientRect, mouseImg, True);
DXDraw1.Flip;
end;

procedure TForm1.DXDraw1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
mouse_X := x;
mouse_y := y;
end;

procedure TForm1.DXDraw1Initialize(Sender: TObject);
begin
mouseImg:= TDirectDrawSurface.Create(DXDraw1.DDraw);
mouseImg.LoadFromGraphic(dximagelist1.Items.Items[0].Picture.Graphic);
dxtimer1.Enabled:=true;
dxdraw1.Cursor := crNone;
end;



This code requires one image in a dximagelist, one dxtimer with enabled set to false, and of course the dxdraw component.

fabianokm
19-05-2004, 01:30 PM
It seems your cursor isn't visible because there is no drawing
routine to it. You could place a drawing routine here...



onMouseMove event
MouseSprite.x := x;
MouseSprite.y := y;
DXImageList1.items.items[0].Draw(x, y, ...........);