Loadanim/Drawanim funktionieren nicht richtig.

Previous topic - Next topic

D2O

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.



Code (glbasic) Select
// --------------------------------- //
// 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
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

peterpan

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

D2O

Hi peterpan,
als alternative kannst Du Dir ja mal das hier anschauen.
Letzter eintrag.

http://www.glbasic.com/forum/viewtopic.php?pid=9891#p9891
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

AndyH

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.

Code (glbasic) Select
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

D2O

I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell