Eli tässä olisi nyt tällainen pieni FLI-animaatioita näyttävä aliohjelma QB:lle. Muuttujien nimet ovat mitä ovat, ja optimisoidakin tuota voisi ainakin hieman (PSET => POKE nopeuttaisi kivasti ainakin).
Pitäisi toimia kaikilla FLI-tiedostoilla.. jos näin ei kuitenkaan tapahdu niin pistä mailia _____@luukku.com. FLC-tuki tulossa ehkä sitten myöhemmin..
FLI-animaatioita saat aikaan mm. Jasc AnimationShopilla.
' 320x200x256 FLI-player (c) fawkz 2002 ' if you encounter a FLI that doesn't work, mail ' me _____@luukku.com. DECLARE SUB playfli (flifile AS STRING) TYPE FLIHeader size AS LONG magic AS INTEGER frames AS INTEGER widthi AS INTEGER height AS INTEGER depth AS INTEGER flags AS INTEGER speed AS INTEGER nexti AS LONG frit AS LONG expand AS STRING * 102 END TYPE TYPE FrameHeader size AS LONG magic AS INTEGER chunks AS INTEGER expand AS STRING * 8 END TYPE TYPE ChunkHeader size AS LONG typei AS INTEGER END TYPE playfli "fawkz.fli" ' simple to use..
playfli-aliohjelma
SUB playfli (flifile AS STRING) CONST FLI.COLOR = 11 CONST FLI.LC = 12 CONST FLI.BLACK = 13 CONST FLI.BRUN = 15 CONST FLI.COPY = 16 DIM f AS FLIHeader, g AS FrameHeader, h AS ChunkHeader DIM c AS INTEGER, d AS INTEGER, e AS LONG, n AS INTEGER DIM j AS STRING * 1, k AS INTEGER, l AS INTEGER, m AS INTEGER DIM o AS INTEGER, x AS INTEGER, y AS INTEGER, z AS INTEGER DIM i AS INTEGER SCREEN 13 i = FREEFILE OPEN flifile FOR BINARY AS i GET #1, , f ' read header in FOR z = 1 TO f.frames GET #1, , g ' read frameheader FOR c = 1 TO g.chunks ' loop for chunks in this frame.. GET #1, , h ' get chunkheader.. SELECT CASE h.typei CASE FLI.COLOR ' palette stuff GET #1, , d ' number of packets FOR n = 1 TO d GET #1, , j ' colors to skip OUT &H3C8, ASC(j) GET #1, , j ' colors to change k = ASC(j) IF k = 0 THEN k = 256 FOR l = 1 TO k GET #1, , j OUT &H3C9, ASC(j) GET #1, , j OUT &H3C9, ASC(j) GET #1, , j OUT &H3C9, ASC(j) NEXT l NEXT n CASE FLI.LC ' linecompression GET #1, , d ' lines that are same as in last frame.. GET #1, , m ' number of lines that change FOR n = d TO d + m - 1 ' start fetching lines.. x = 0 GET #1, , j ' number of packets in this line k = ASC(j) FOR y = 1 TO k GET #1, , j ' skip_count x = x + ASC(j) GET #1, , j ' size_count l = ASC(j) IF l < &H80 THEN ' l bytes follow .. copy to scr FOR o = 0 TO l - 1 GET #1, , j PSET (x, n - 1), ASC(j) x = x + 1 NEXT o ELSE GET #1, , j l = l - &H80 FOR o = 1 TO l - 1 PSET (x, n - 1), ASC(j) x = x + 1 NEXT o ' copy l bytes of asc(j) to scr... END IF NEXT y NEXT n CASE FLI.BLACK ' black the screen, we could ignore this ' coz it only occurs for first frame CLS CASE FLI.BRUN ' only for the first frame.. FOR n = 1 TO 200 GET #1, , j ' number of packets k = ASC(j) x = 0 DO GET #1, , j ' size_count l = ASC(j) IF l < &H80 THEN ' positive GET #1, , j FOR o = 0 TO l - 1 PSET (x, n - 1), ASC(j) x = x + 1 NEXT o ELSE l = (0 - l) AND &HFF FOR o = 0 TO l - 1 GET #1, , j PSET (x, n - 1), ASC(j) x = x + 1 NEXT o END IF LOOP UNTIL x >= 320 NEXT n CASE FLI.COPY ' copy 64000 raw bytes.. FOR y = 0 TO 199 FOR x = 0 TO 319 GET #1, , j PSET (x, y), ASC(j) NEXT x NEXT y END SELECT NEXT c FOR c = 1 TO f.speed ' you can put a delay here if you want... ' but qb is slow so you might not want to ;) NEXT c NEXT z CLOSE i END SUB
Niin ja sitten kun kopypastailette tuota niin kumpikin vaan peräkkäin samaan tiedostoon.
ja mistähän niitä tiedostoja saa?
Osaisitko kertoa vielä jonkun näpsän ohjelman, jolla noita FLI-animaatioita voi luoda?
Tietääkseni JASC:in animationshop pro:lla pystyy niitä tekemään. Sen saa ainakin mikrobitti-rompuilta :)
Kyllä animation shopilla niitä saa aikaan (ainakin muistaakseni), mutta sitä ei niiden takia kannata ainakaan rekisteröidä.
Ääh kirjoitusvirhe:
"' put qb is slow so you might not want to ;)"
but:han sen kuuluisi olla.. jos joku muuten haluaa tunkea tuonne delayta niin f.speed vsyncciä pitäisi toimia..
Delay on helpoin tehä tällein:
WAIT &H3DA, 8
Toi odottaa VSyncin.
Mikä on FLI-animaatio? :o
FLI on Autodeskin vanhahko animaatioformaatti.
Aihe on jo aika vanha, joten et voi enää vastata siihen.