AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Ausgewähltes Sprites zu Mausklick-Koordinaten bewegen?
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgewähltes Sprites zu Mausklick-Koordinaten bewegen?

Ein Thema von MydroF · begonnen am 4. Sep 2009 · letzter Beitrag vom 7. Sep 2009
Antwort Antwort
MydroF

Registriert seit: 22. Aug 2009
9 Beiträge
 
#1

Re: Ausgewähltes Sprites zu Mausklick-Koordinaten bewegen?

  Alt 6. Sep 2009, 14:56
Hab versucht den Code umzusetzen, leider wird an verschiedenen Stellen verschiedenes vom Programm nicht akzeptiert=(
Hab das ganze mal in nem neuen Projekt getestet, leider wird der Code eben nicht ausgeführt, und es bewegt sich auch immer noch nichts, von dem, was funktioniert. Habs mal angehangen.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,AdDraws, AdClasses, AdTypes, PNGImage, AdSprites, StdCtrls;

type
  //Eigener Raumschifftyp I
  TFlieger1 = class(TImageSprite)
    private
    FSelected:Boolean;
    FPosition,FDestination:TPoint;
    procedure SetSelection(Value:Boolean);

    public
      XSpeed:integer;
      procedure Update;
      constructor Create(AParent:TSprite);override;
      procedure Move(Destination: TPoint);
      procedure Update;override;
    published
    property Selected: Boolean read FSelected write FSelected;

  end;


  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
  AdImageList:TAdImageList;
  AdDraw:TAdDraw;
  AFlieger1 : Array[0..100] of TFlieger1;
  AdSpriteEngine:TSpriteEngine;
  procedure Idle(Sender:TObject; var Done:boolean);
    { Public declarations }
  end;

var
  Form1: TForm1;
  i:integer;
  Flieger1:TFLieger1;
  TAnzahl : integer = 0;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
AdDraw := TAdDraw.Create(self);
AdDraw.DllName := 'main/AndorraDX93D.dll';

if AdDraw.Initialize then
    begin
        Application.OnIdle := Idle;
        AdImageList := TAdImageList.Create(AdDraw);
        with AdImageList.Add('flieger1') do
        begin
            Texture.LoadGraphicFromFile('anim/flieger1.png',true,clFuchsia);
            PatternWidth := 128;
            PatternHeight := 128;
            end;
        AdImageList.Restore;
        AdSpriteEngine := TSpriteEngine.Create(nil);
        AdSpriteEngine.Surface := AdDraw;
        Randomize;

        end
        else
        begin
        ShowMessage(AdDraw.GetLastError);
        halt; //<-- Schließt die komplette Anwendung
    end;

end;


procedure TForm1.Idle(Sender: TObject; var Done: boolean);
begin
    if AdDraw.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann...
        begin
        AdDraw.ClearSurface(clBlack); //Füllt die Oberfläche mit schwarzer Farbe

        AdDraw.BeginScene;
         AdSpriteEngine.Draw;
         AdSpriteEngine.Dead;


        AdDraw.EndScene;

        AdDraw.Flip; //Präsentiert die gezeichneten Dinge auf dem Bildschirm.
        end;

    Done := false; // Diese Zeile nicht vergessen, sonst wird der Code nur sporadisch ausgeführt.
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
AdDraw.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
i:=TAnzahl;
AFlieger1[i]:= TFlieger1.Create(AdSpriteEngine);
AFlieger1[i].Image := AdImageList.Find('flieger1');
inc(TAnzahl);
end;


Constructor TFlieger1.Create(AParent:TSprite);
var
i:integer;
begin
i:=TAnzahl;
if i<5 then begin
  inherited;
  X := 100*i;
  Y := 90;
  Z := 0;
  end;
end;

procedure TFlieger1.SetSelection(Value: Boolean);
begin
FSelected:=Value;
end;

procedure TFlieger1.Move(Destination: TPoint);
begin
if Selected then FDestination := Destination;
end;


procedure TFlieger1.Update;
begin
* if (FPosition.X = FDestination.X) and (FPosition.Y = FDestination.Y) then
* begin
* * // Wenn Position erreicht wurde, Selektion entfernen
* * Selected := false;
* end else
* begin
* * // Zum Ziel bewegen
* * // Mit Geschwindigkeit von 1 Pixel pro Frame
* * if FPosition.X > FDestination.X then FPosition.X := FPosition.X - 1 else FPosition.X := FPosition.X + 1;
* * if FPosition.Y > FDestination.Y then FPosition.Y := FPosition.Y - 1 else FPosition.Y := FPosition.Y + 1;
* end;
end;


end.
Angehängte Dateien
Dateityp: rar bewegen_167.rar (1,20 MB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz