Versuche einen Tileloader zu machen scheiteren :(

Previous topic - Next topic

D2O

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 ///////////////////////////////////////////////
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

Kitty Hello

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).

D2O

Ah, Danke.

Also Grabsprite geht nur im Bildschirmbereich,
nicht Grabsprite versetzen, besser das Sprite versetzen.
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

Kitty Hello

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