Seite 1 von 2

Komischer Fehler beim laden der Sprites

Verfasst: 10.03.2005 15:04
von Janiboy
Hi Leute,
nachdem ich euch jetzt mal eine Zeit lang mit meinen nervigen Anfängerfragen verschont habe, habe ich nun schon wieder ein Problem. Ich möchte eine Animation erstellen, auf die altbewährte Weise wies auch schon vorher geklappt hat und der zeigt einen Fehler beim Laden von Fighter1. :bluescreen: Code:

Code: Alles auswählen

If InitSprite()=0 
EndIf 
If InitKeyboard()=0  
EndIf 
If InitSprite3D()=0 
EndIf 
If InitMouse()=0 
EndIf 

If OpenScreen(640, 480, 16, "Mein Spiel")=0 
EndIf 


If LoadSprite(0, "Fighter1.bmp" ,0)=0 
EndIf 
If LoadSprite(1, "Fighter2.bmp" ,0)=0 
EndIf 
If LoadSprite(2, "Fighter3.bmp" ,0)=0 
EndIf 

TransparentSpriteColor(0, 255, 0, 128) 
TransparentSpriteColor(1, 255, 0, 128) 
TransparentSpriteColor(2, 255, 0, 128) 

Repeat 
If IsScreenActive() 
ClearScreen(0,0,0) 
DisplayTransparentSprite(AniFrame, x, y) 
FlipBuffers() 
Delay(200) 
AniFrame + 1 
If AniFrame => 2 : AniFrame = 0 : EndIf 

ExamineKeyboard() 

If KeyboardPushed(#PB_Key_Left) 
x-1 
EndIf 

If KeyboardPushed(#PB_Key_Right) 
x+1 
EndIf 

If KeyboardPushed(#PB_Key_F5) 
x+13 
EndIf 

If KeyboardPushed(#PB_Key_F6) 
y-13 
x+13 
EndIf 
EndIf
Könnt ihr mir helfen? (Sorry, vergaß wie die codetags gehen :oops:)

Verfasst: 10.03.2005 20:01
von SDX
Was für einen Fehler zeigt er denn?

Du kannst Dir die 3 TransparentSpriteColor sparen, wenn Du einfach eine Zeile TransparentSpriteColor(-1, 255, 0, 128) schreibst. Im Allgemeinem würde ich auch die Sprites nicht so Nummerieren sonder die via #PB_Any nummerieren lassen.
Und das IF bei den Inits kannst Du Dir auch sparen, wenn Du nicht ne Fehlermeldung ausgeben willst, z.B.

Code: Alles auswählen

If InitSprite()=0 
EndIf 
wird zu

Code: Alles auswählen

If InitSprite()=0 
  MessageRequester("Fehler","Sprite"):End
EndIf 

Verfasst: 10.03.2005 21:59
von Janiboy
Nun ja, er definiert den Fehler nicht. Die Kompilierung beginnt und auf einmal bricht es ab und diese Zeile ist markiert. Was kann das sein?

Verfasst: 10.03.2005 22:00
von Janiboy
UUps, hab wohl zu oft geklickt :oops:

Verfasst: 10.03.2005 22:03
von Laurin
Welche Zeile ist markiert?

Wegen Dreifach-Post: Schick mal ne PN an einen Moderator, damit er die zwei überflüssigen Posts löscht.

Verfasst: 10.03.2005 22:50
von Janiboy
Folgende Zeile ist als Fehler markiert:

If LoadSprite(0, "Fighter1.bmp" ,0)=0

Verfasst: 11.03.2005 01:16
von Kaeru Gaman
SDX hat geschrieben:Im Allgemeinem würde ich auch die Sprites nicht so Nummerieren sonder die via #PB_Any nummerieren lassen.
das, lieber kollege, ist wohl geschmackssache ;)

ich bin sogar ziemlich froh, wenn ein starty seine sprites anständig nummeriert,
anstatt mit irgendwelchen abstrakten methoden durcheinander zu geraten...

@Janiboy

also, wenn du den debugger anhast, und er wirklich nur abbricht,
dann ist wahrscheinlich die datei irgendwie kaputt.

mal den fighter1 nochmal neu, bzw. probier erstmal NUR den Dateinamen zu verändern.
(ich meine, eine andere bmp laden...)

Verfasst: 11.03.2005 03:01
von Laurin
Beachte auch, dass die Maße des BMPs am Besten ein Vielfaches von 2 sein sollten. zB 2x2, 4x4, 8x8, 16x16 etc.

Verfasst: 11.03.2005 04:00
von Kaeru Gaman
[edit]im zustand der trunkenheit geschriebene profanität gelöscht.

Verfasst: 11.03.2005 09:21
von SDX
@Janiboy: Kannst Du mal den kompletten Code posten? Am besten irgendwo zum saugen mit BMPs (und btw... ich würde auch lieber PNGs benutzen).

@Kaeru Gaman: Achte bitte auf Deinen Ton, Du schweifst schon wieder ins provokativ Unfreundliche :wink:

@Laurin: Kaeru Gaman hat`s schon angedeutet, ein Sprite mit ner 2er-Potenz als Kantenlänge (sprich 16x16, 32,x32, etc..) sollte man bei Sprite3D benutzen, da es 3D-Karten gibt, die nur mit solchen Bildern was anfangen können. Soweit ich das festgestellt habe, laufen auf den aktuellen GraKa´s aber auch bei Sprite3D Bilder mit beliebigen Kantenlängen :mrgreen: