Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 18.11.2009, 13:19 Titel: Einzelbilder -> als Video darstellen |
|
|
Kann man mit Hilfe des timers einen Film aus mehreren Einzelbildern darstellen?
ich meine:
Habe ich die zeit 1111.111 sekunden
dann habe ich 1111 Sekunden und 111 Millisekunden.
Wenn jetzt 25 Bilder in der Sekunde dargestellt werden,
dann habe ich 1000 Millisekunden / 25 = 40 ms
also muss ich zu den 111 Millisekunden 40 ms addieren usw.
Das wären dann 151 Millisekunden.
Also bei der Zeit 1111.151 Sekunden, müsste ein Bild dargestellt werden.
Geht das so einfach ? |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 18.11.2009, 16:01 Titel: |
|
|
Naja so inetwa. Du solltest vorher noch schauen, wie lange es dauert ein Bild zu dekodieren und zu blitten... den Wert dann noch mit einrechnen... |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 18.11.2009, 19:39 Titel: |
|
|
Code: |
dim xtot as double
do
for x as uinteger = 1 to ubound(picarray)
put (0, 0), picarray(x)
do
if xtot < timer() then exit do
loop
xtot = timer + (1 / 25)
next
loop
|
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 18.11.2009, 20:56 Titel: |
|
|
Danke euch....
Habs grad noch abgeändert:
Code: |
screenres 320,240,32
dim bild (1 to 2000) as any ptr
dim datei(1 to 2000) as string
dim breite as integer
dim hoehe as integer
dim i as uinteger
breite=240
hoehe=320
dim laenge as uinteger
dim texta as string
dim spielzeit as uinteger
DIM xtot AS DOUBLE
DO
FOR x AS UINTEGER = 1 TO UBOUND(bild)
laenge = len (str(x))
if laenge = 1 then
texta="000"
end if
if laenge = 2 then
texta="00"
end if
if laenge = 3 then
texta="0"
end if
if laenge = 4 then
texta = ""
end if
bild(x)=IMAGECREATE(hoehe,breite,0)
datei(x)="c:\film\"+texta+str(x)+".bmp"
bload datei(x),bild(x)
PUT (0, 0), bild(x),pset
If bild(x) <> 0 Then ImageDestroy bild(x)
locate 1,1
print "BildNr.";x
spielzeit = x * 40 /1000
print "Sekunden:";spielzeit
DO
IF xtot < TIMER() THEN EXIT DO
LOOP
xtot = TIMER + (1 / 25)
NEXT
LOOP
|
|
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 18.11.2009, 21:03 Titel: |
|
|
ist simple, aber mit ton wirds wahrscheinlich nichts, leider
Irgendwie scheint es auch ein weng ruckelig zu sein. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 19.11.2009, 08:04 Titel: |
|
|
Natürlich is das langsam!!!
Du lädst in jedem durchlauf die bilder neu und entlädst sie wieder, anstat ein array zu erstellen, welches vor schleifenbeginn einfach alle bilder "vor"läd, und später nur mit put anzeigt. (was DEUTLICH an geschwindigkeit ausmacht)
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
|