Jag försöker att lära/förstå det här med sprite. Skulle hjälpa om du bifogar länken till turialen. Så man kan ladda ned filerna. Jag hadde lagt in länken men den ville inte visa sig. Sorry. Hade nog inte laddat bilden för visitkortet hoss mig. Troligtvis en hexeditor, alternativt med ett eget program. Ögnade genom sidan lite, bara. Jag hittade ett program som löser alla problemen. Kul att du äntligen "hittade ett program som löser alla problemen",Om sprite
Som underlag så har jag tagit ner en turial ifrån www.advantage.co.nz/ur/directx7.htm där man bl a laddar upp en sprite run.bmp.
Tittar man på den spriten i photoshop t ex så är det en "stor" fil som innehåller en massa bilder (rörelse) på en gubbe. Det finns inga avgränsningar, alla bilder(rörelsena) är olika stora. Den ligger i 3 rader och är olika bilder(rörelse) på varje rad.
Fråga 1, jag kan inte förstå hur man kan utskilja dom enskillda bilderna.(lite kod kommer nedanför)
För att testa, så försökte jag att ladda en annan fil, med ung samma storlek, men denna gången är bilderna(rörelsena) lika stora. Jag får OVERFLOW.
De kodrader som jag tror är aktuella är dessa:
<code>
'i declarations arean
'hold the sprites
Dim spnx%(1, 70), spny%(1, 70), spnw%(1, 70)
Dim spnh%(1, 70), spnox%(1, 70), spnoy%(1, 70)
'i load data()
Dim ddckey As DDCOLORKEY
Dim ff As Integer
ff = FreeFile
'let's set the surface description
ddsd_run.lFlags = DDSD_CAPS
ddsd_run.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
Set DDS_run = dd.CreateSurfaceFromFile(App.Path & "\run.bmp", ddsd_run)
' Set DDS_run = dd.CreateSurfaceFromFile(App.Path & "\Bild\RobotN.bmp", ddsd_run)
ddckey.low = RGB(255, 255, 255) 'white
ddckey.high = RGB(255, 255, 255)
DDS_run.SetColorKey DDCKEY_SRCBLT, ddckey
Dim a%
'load up the sprite for run
Open App.Path & "\run.spr" For Random As ff Len = 2
' Open App.Path & "\Bild\RobotN.bmp" For Random As ff Len = 2 'Robot.bmp
For a% = 0 To LOF(ff) \ 6
Get #ff, a% * 6 + 1, spnox%(0, a% + 1)
Get #ff, a% * 6 + 2, spnoy%(0, a% + 1)
Get #ff, a% * 6 + 3, spnx%(0, a% + 1)
Get #ff, a% * 6 + 4, spny%(0, a% + 1)
Get #ff, a% * 6 + 5, spnw%(0, a% + 1)
Get #ff, a% * 6 + 6, spnh%(0, a% + 1)
Next
Close #ff
'Now let's set the surface description
ddsd_other.lFlags = DDSD_CAPS
ddsd_other.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
'now create the other off-screen surface
Set DDS_other = dd.CreateSurfaceFromFile(App.Path & "\other.bmp", ddsd_other)
DDS_other.SetColorKey DDCKEY_SRCBLT, ddckey
'load up the sprite for the other surface
Open App.Path & "\run.spr" For Random As ff Len = 2
For a% = 0 To LOF(ff) \ 6
Get #ff, a% * 6 + 1, spnox%(1, a% + 1)
Get #ff, a% * 6 + 2, spnoy%(1, a% + 1)
Get #ff, a% * 6 + 3, spnx%(1, a% + 1)
Get #ff, a% * 6 + 4, spny%(1, a% + 1)
Get #ff, a% * 6 + 5, spnw%(1, a% + 1)
Get #ff, a% * 6 + 6, spnh%(1, a% + 1)
Next
Close #ff
</code>
Kan någon tyda/förklara det här så är jag tacksam, dvs så att jag kan förstå hur han läser, och hur jag skall göra för att försöka med andra sprites.
TackSv: Om sprite
Tycker det är lite fegt att vara anonymis...Sv: Om sprite
www.advantage.co.nz/ur/directx7.htm
Vad menar du med anonym? Mitt visitkort finns ju.Sv: Om sprite
Det finns fyra filer. En två bitmapar och två spr filer. Bitmaparna laddas till en surface och sedan anger spr filerna var bilden fins och vilken offset den har.
Detta är för att slippa Ladda filer. Tar mer tid att läsa många små bilder än en stor. Dessutom är det mer overhead med flera bilder. Som du säer är provlemet att identifiera bildernas storlek, position och ev offsett.Sv: Om sprite
Räkna ut hur många koordinater det behövs för att bestämma vilka sprites du behöver, dividera antalet byte på filen med det, så får du fram en ungefärlig koordinatstorlek (troligtvis 4 per punkt, 2 för x, 2 för y). Läs sedan filen binary och läs så stora segment (integer=2, long=4) som den frågar efter.
Grundidén i alla fall.
/Niklas JanssonSv: Om sprite
Det är väl här som cell-storleken avgörs, verkar det som:
<code>
'work out the cell
Dim r2 As RECT
r2.Top = spny(0, cell)
r2.Left = spnx(0, cell)
r2.Right = spnx(0, cell) + spnw(0, cell)
r2.Bottom = spny(0, cell) + spnh(0, cell)
</code>
Rent generellt så är väl en Sprite, egentligen bara
en dataType, med egna Properties, i grunden.
/ChristerGbgSv: Om sprite
Nej det är ingen egen datatyp utan i spr-filen så skrivs info om alla bilderna i spriten.
Det är höjd och bred på varje bild. Höjd och hur lång spriten är. Hur många "columner och rader som spriten består utav.
När sedan spriten är laddad, så kan man få tag på enskillda bilder och göra sekvenser av dem, dvs animeringen.
Tack för eran uppmärksamhet.Sv: Om sprite
så att vi "andra" kan fortsätta att irra omkring i "dimman", eller du
kanske kunde dela med dig av "kakan" som du hittat, till oss, oxå? :-/
/ChristerGbg