GLBasic forum

Other languages => GLBasic - de => Topic started by: D2O on 2007-Jan-28

Title: Versuche einen Tileloader zu machen scheiteren :(
Post by: D2O on 2007-Jan-28
Tach alle,
ich habe mir gedacht, da man ja, z.B. das mit Filerect gezeichnete mit Grabsprite als Sprite speichern
und anzeigen kann, das auch mit geladenen Bildern gehen sollte.

Die Idee ist, da es viele Bilder/Animationen gibt die als Tile in einem grossen Bild gespeichert sind, zu Laden,
als Sprite zu zeichnen (in den Backbuffer) und mit Grabsprite in einzelne Sprite zu wandeln.

Naja, blieb nur beim versuch :(
Irgendwie schein ich hier keinen zugriff auf den Buffer den ich dafür brauch, zu haben.

Hier mal mein kleiner Code:
Code (glbasic) Select
// --------------------------------- //
// Project: Tileloader
// By Fabio "D²O" Soddu
// Start: Sunday, January 28, 2007
// IDE Version: 4.051


DIM joe[24] // feld für 24 einträge erstellen
GLOBAL joe_ani = 0 //ein counter für die Animation
LOADSPRITE   "gfx/joe64.png",200 // Sprite laden, das Bild ist 64 hoch und 24*64 lang

SPRITE 200,0,0 // Sprite wird in den Backbuffer gezeichnet

FOR i = 0 TO 23
joe[i] = i  // Spritenummern vergeben
GRABSPRITE joe[i],64*i,64,64,64 // Sprite kopieren und um 1 Tile(64pix) versetzen
NEXT

/////////////////////////// MAIN START ///////////////////////////////////////////////
WHILE TRUE
MOUSESTATE my,my,b1,b2
IF b1 THEN  joe_ani = joe_ani + 1 //Kontoll abfrage für joe_ani
IF joe_ani > 23 THEN joe_ani = 1

SPRITE joe[joe_ani],0,0 // hier sollte das "gegrabte" Sprite gezeichnet werden
SHOWSCREEN

WEND

/////////////////////////// MAIN ENDE ///////////////////////////////////////////////
Title: Versuche einen Tileloader zu machen scheiteren :(
Post by: Kitty Hello on 2007-Jan-29
24*64=1536 -> So breit ist Dein Screen nicht ;)
Ausserdem schneidest Du den Bereich 64,64 -> 128,128 aus (für i=0), und Dein Sprite liegt auf 0,0->1536,64

Du solltest also:
Code (glbasic) Select
FOR i=0 TO 23
SPRITE 200, -i*64,0
GRABSPRITE joe[i], 0,0,  64,64
NEXT
PS: Grabsprite ist be Transparentem Hintergrund ein Problem, wenn man 16 Bit Farbiefe hat (das kann bei nicht-Vollbild Programmen passieren).
Title: Versuche einen Tileloader zu machen scheiteren :(
Post by: D2O on 2007-Jan-29
Ah, Danke.

Also Grabsprite geht nur im Bildschirmbereich,
nicht Grabsprite versetzen, besser das Sprite versetzen.
Title: Versuche einen Tileloader zu machen scheiteren :(
Post by: Kitty Hello on 2007-Jan-29
Ja. Der "Backbuffer" ist genau gleich groß mit dem Screen.
Unter PocketPC / GP2X ist's übrigens gar kein Problem. Da geht's wie's soll