Avatar billede esben_pape Nybegynder
18. marts 2003 - 22:04 Der er 12 kommentarer og
1 løsning

problemer med classes (inherited)

Jeg har et lille problem med en klasse. Jeg sidder og leger lidt med DelphiX, og jeg skulle meget gerne have ændret lidt på en function, som ser sådan her ud:

procedure TImageSprite.DoDraw;
var
  ImageIndex: Integer;
  r: TRect;
begin
  ImageIndex := GetDrawImageIndex;
  r := GetDrawRect;
  Image.Draw(FEngine.Surface, r.Left, r.Top, ImageIndex);
end;

Linjen "Image.Draw bla bla" vil jeg gerne have "lavet om" til Image.DrawRotate( bla bla). Det prøver jeg at gøre sådan her:

procedure TPlayerSprite.DoDraw;
var
  ImageIndex: Integer;
  r: TRect;
begin
  inherited ;

    Image.DrawRotate(MainForm.DXDraw.Surface,r.Left,r.Top,Image.Width,Image.Height,0,0.5,0.5,10);
end;

Det har absolut ingen effekt. Burde det ikke ændre linjen hvor den tegner (Image.Draw)? Eller har jeg bare misforstået noget? Hvad skal jeg gøre?
Avatar billede kfz Nybegynder
18. marts 2003 - 22:13 #1
den vil stadig udføre Image.Draw(FEngine.Surface, r.Left, r.Top, ImageIndex); hvilket måske kan skabe fejlen
Avatar billede esben_pape Nybegynder
18. marts 2003 - 22:14 #2
...men hvordan kan man så "fixe" det?
Avatar billede kfz Nybegynder
18. marts 2003 - 23:13 #3
lav

procedure TPlayerSprite.DoDraw;
var
  ImageIndex: Integer;
  r: TRect;
begin
  inherited ;

    Image.DrawRotate(MainForm.DXDraw.Surface,r.Left,r.Top,Image.Width,Image.Height,0,0.5,0.5,10);
end;

om til

procedure TplayerSprite.DoDraw;
var
  ImageIndex: Integer;
  r: TRect;
begin
  ImageIndex := GetDrawImageIndex;
  r := GetDrawRect;
  Image.DrawRotate(MainForm.DXDraw.Surface,r.Left,r.Top,Image.Width,Image.Height,0,0.5,0.5,10);
end;
Avatar billede esben_pape Nybegynder
18. marts 2003 - 23:28 #4
Har skam prøvet den mulighed, men den siger Undeclared identifier: GetDrawImageIndex. Det samme med GetDrawRect. Jeg HAR sat DXSprite op i min uses-sektion, og jeg undrer mig over, den ikke vil kendes ved den function.

unit SpritesU;

interface

uses DXSprite, DXInput, Dialogs, SysUtils, Classes,
  DXConsts, Windows, DXDraws, DXClass, DirectX;

type
  TPlayerSprite = class(TImageSprite)
  private
    FAngle: Integer;
  public
    property Angle: Integer
      read FAngle
      write FAngle;
  protected
//    procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
    procedure DoMove(MoveCount: Integer); override;
    procedure DoDraw; override;
  end;

var
  PosX, PosY: Double;

implementation

uses MainU;

forslag?
Avatar billede kfz Nybegynder
18. marts 2003 - 23:34 #5
er du sikker på at funktionerne ligger i dxsprite??
Avatar billede esben_pape Nybegynder
18. marts 2003 - 23:37 #6
procedure TImageSprite.DoDraw;
var
  ImageIndex: Integer;
  r: TRect;
begin
  ImageIndex := GetDrawImageIndex;
  r := GetDrawRect;
  Image.Draw(FEngine.Surface, r.Left, r.Top, ImageIndex);
end;

Denne function er taget direkte fra DXSprite
Avatar billede esben_pape Nybegynder
18. marts 2003 - 23:37 #7
Min TPlayerSprite laver jeg sådan her:

type
  TPlayerSprite = class(TImageSprite)
  private
    FAngle: Integer;
  public
    property Angle: Integer
      read FAngle
      write FAngle;
  protected
//    procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
    procedure DoMove(MoveCount: Integer); override;
    procedure DoDraw; override;
  end;
Avatar billede kfz Nybegynder
18. marts 2003 - 23:39 #8
jeg mener GetDrawImageIndex og GetDrawRect ikke dodraw
Avatar billede kfz Nybegynder
18. marts 2003 - 23:39 #9
hvor fandt du delphix til delphi 6??
http://www.eksperten.dk/spm/326327
Avatar billede esben_pape Nybegynder
18. marts 2003 - 23:45 #10
Jeg fandt DelphiX til D6 herfra: http://delphigamedev.name2host.com/files/delphix_d6.zip

GetDrawImageIndex og GetDrawRect er vist også i DXSprite. Koden her er direkte fra DXSprite:

function TImageSprite.GetDrawImageIndex: Integer;
begin
  Result := FAnimStart+Trunc(FAnimPos);
end;

function TImageSprite.GetDrawRect: TRect;
begin
  Result := BoundsRect;
  OffsetRect(Result, (Width-Image.Width) div 2, (Height-Image.Height) div 2);
end;
Avatar billede esben_pape Nybegynder
18. marts 2003 - 23:51 #11
...tror jeg smutter i seng nu...håber på at nå et resultat i morgen
Avatar billede esben_pape Nybegynder
19. marts 2003 - 19:31 #12
Jeg kunne virkelig godt tænke mig lidt respons her...
Avatar billede esben_pape Nybegynder
20. marts 2003 - 14:15 #13
...opretter nyt spm!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester