Hi,
wenn ich ein Tileset mit Loadanim lade und mit drawanim zeichne, werden immer beim "Zeilenwechse" 2 leere Sprites gezeichnet.
Also bei einem Tileset, das z.B. über 3 Zeilen geht werden insgesamt 4 Leere Bilder angezeigt, die dann im gesammten fehlen.
Kompliziert ;)
Bei folgendem Code und Tileset wir nur bis zur 14 gezeichnet und dann wieder von 1, 15-18 werden nicht angezeigt.
(http://www.deuteriumoxid.com/glbasic/tile2.png)
// --------------------------------- //
// Project: Animimage
// Start: Sunday, January 27, 2008
// IDE Version: 5.150
var = LoadAnimate ( "tile2.png",0,128,64)
// LOADANIM "tile2.png",0,128,64
// var = 18
WHILE TRUE
MOUSESTATE mx, my, b1, b2
b = SimpleMouseHit(b1)
IF b THEN INC a,1
IF a > var -1 THEN a = 0
PRINT "Mouse = "+b1,10,10
PRINT "a = "+a,10,20
PRINT "var = "+var,10,30
PRINT "b = "+b,10,40
DRAWANIM 0,a,100,100
SHOWSCREEN
WEND
FUNCTION SimpleMouseHit : l_in
STATIC s_in
STATIC s_out
STATIC s_count
IF l_in <> 0 AND s_in = 1
INC s_count, 0.0000001
ENDIF
IF l_in <> 0 AND s_in = 0
s_in = 1
s_out = 1
ENDIF
IF s_count <> 0
s_out = 0
IF l_in = 0
s_in = 0
s_count = 0
ENDIF
ENDIF
RETURN s_out
ENDFUNCTION
// Ladet ein Tileset und gibt die anzahl der Tiles zurück
FUNCTION LoadAnimate: file$ ,Id ,w ,h
LOCAL l_out,l_x,l_y
LOADANIM file$,Id,w,h
GETSPRITESIZE Id,l_x,l_y
l_out = INTEGER (l_x / w) * INTEGER(l_y / h)
RETURN l_out
ENDFUNCTION
Hallo D²O,
ich habe das Mal nachvollzogen, und es in der Tat ein Bug.
Bei mir fehlten sogar 12 Frames.
Bis 20 Frames ging alles gut, dann 12 Frames nichts.
Ich hatte eine TileMap mit 20x14 , und ein Tileraster 32x32.
Diese Statements sind sehr wichtig für mich, in meinem jetzigen Spiel
verwende ich diese Befehle.
Hier hab ich auch eine kleine TileMap, aber ein Fehler ist mir nicht aufgefallen.
Ansonsten verwende ich Strip, und das Funktioniert sehr gut!
Peter
Hi peterpan,
als alternative kannst Du Dir ja mal das hier anschauen.
Letzter eintrag.
http://www.glbasic.com/forum/viewtopic.php?pid=9891#p9891
Apologies for my bad translation (blame google language tools).
Diese Datei arbeitet. Ich habe die Größe auf 2 ^, so vermute ich, daß GLBasic hat einen Fehler an gültige Textur Größen? Wenn ich den Code lief mit Ihrem Bild, fand ich in der 7 und 8 wurde eine leere grüne Farbe dann die Nummern 7 und 8 folgten Animation Plätze 9 und 10. Dieses Bild habe ich auch scheint zu funktionieren.
http://baa.ovine.net/glb/tile2a.png
Auch Ihre SimpleMouseHit Funktion, probieren Sie doch einmal statt.
FUNCTION SimpleMouseHit : l_in
STATIC s_lastClick
IF l_in = 1 AND s_lastClick = 0
s_lastClick = 1
RETURN 1
ELSEIF l_in = 0
s_lastClick = 0
ENDIF
RETURN 0
ENDFUNCTION
Yes, so it works right.