AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Sprite wird nicht unsichtbar
Thema durchsuchen
Ansicht
Themen-Optionen

Sprite wird nicht unsichtbar

Ein Thema von Neutral General · begonnen am 5. Mai 2004 · letzter Beitrag vom 21. Mai 2004
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Sprite wird nicht unsichtbar

  Alt 5. Mai 2004, 17:57
Ich habe einen Sprite vom Typ TSchwert und ich möchte das wenn man mit einem anderen Sprite das Schwert berührt dieses unsichtbar (Visible := false) wird. BEi mir kommt während der Laufzeit, wenn ich den Sprite berühre dieser Fehler :

"Zugriffsverletzung bei Adresse 0044163F im Modul 'MeinProgramm.exe' Schreiben von Adresse 0000001A"

Was mache ich falsch ?

Delphi-Quellcode:
procedure TSpieler.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  if sprite is TGegenstand then
    begin
      Form1.DXWaveList1.Items.Find('sound').Play(False);
      dead;
      Visible := false;
    end;
  if sprite is TSchwert then
    begin
       Schwert.Visible := false;
    end;
end;
Bei der Brührung von TGegenstand wird der Spieler unsichtbar, aber wie mache ich das, wenn der Spieler gegen das Schwert läuft TSchwert unsichtbar wird ?
Michael
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Sprite wird nicht unsichtbar

  Alt 5. Mai 2004, 19:32
Moin!

Dann scheint deine Variable Schwert keine Instanz zu beinhalten. Nimm daher doch einfach das übergebene Sprite, welches doch die Eigenschaft Visible schon bietet, oder?

Delphi-Quellcode:
procedure TSpieler.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  if sprite is TGegenstand then
    begin
      Form1.DXWaveList1.Items.Find('sound').Play(False);
      dead;
      Visible := false;
    end;
  if sprite is TSchwert then
    begin
       sprite.Visible := false;
    end;
end;
Wenn nicht und erst TSchwert diese Property einführt, dann so:

Delphi-Quellcode:
procedure TSpieler.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  if sprite is TGegenstand then
    begin
      Form1.DXWaveList1.Items.Find('sound').Play(False);
      dead;
      Visible := false;
    end;
  if sprite is TSchwert then
    begin
       TSchwert(sprite).Visible := false;
    end;
end;
MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#3

Re: Sprite wird nicht unsichtbar

  Alt 21. Mai 2004, 22:37
Mein Problem ist: Mein Sprite bewegt sich, wenn ich bei ihm dead aufrufe, wird nur die Collision nicht mehr beachtet, alles andere läuft weiter. Und da jedesmal ein neues erzeugt wird, wenn das alte drauf geht, kann man 5-10 mal schießen, danach wird alles so langsam, das man den PC eigentlich neustarten müsste!

Wie kann ich das Sprite total auf Free setzen?
  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 03:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz