Bei jedem Lied Bild 5sec anzeigen
Übersicht

![]() |
N0XBetreff: Bei jedem Lied Bild 5sec anzeigen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Wie oben schon beschrieben möchte ich bei jedem Lied wieder ein Bild (und Text) 5sec anzeigen lassen. Mein Ansatz: Code: [AUSKLAPPEN] If Not ChannelPlaying(channel) Then
channel=PlayMusic("sfx\songs\"+s\name$) son$ = s\name$ s = After s If s=Null Then s=First song EndIf For s.song = Each song If song_ima > MilliSecs()Then DrawImage(title,GraphicsWidth()-300,0) Text GraphicsWidth()-210,43,son$ EndIf Next Funktioniert nicht, was mache ich falsch? Was sollte ich anders machen? Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, du solltest vielleicht erst mal unter der Zeile mit PlayMusic().... die Variable song_ima auf einen Wert setzen, oder?
BlitzBasic: [AUSKLAPPEN] song_ima = MilliSecs() +5000 |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das habe ich alles schon davor gemacht. Das ist ja nur ein Codeausschnitt.
Wenn benötigt: Code: [AUSKLAPPEN] Graphics 1024,768,32,1
SetBuffer BackBuffer() SeedRnd MilliSecs() timer = CreateTimer(60) Type song Field name$ End Type ;Songs auslesen und verarbeiten Global musicV = ReadDir("sfx\songs") Repeat Local SourceFile$ = NextFile(musicV) If SourceFile$ = "" Then Exit If Lower(Right(SourceFile$, 4)) = ".wav" Then s.song = New song s\name$ = SourceFile$ EndIf Forever CloseDir(musicV) Local song_ima = MilliSecs()+5000 s = First song While Not KeyDown(1) WaitTimer(timer) If Not ChannelPlaying(channel) Then channel=PlayMusic("sfx\songs\"+s\name$) son$ = s\name$ s = After s If s=Null Then s=First song EndIf For s.song = Each song If song_ima > MilliSecs()Then DrawImage(title,GraphicsWidth()-300,0) Text GraphicsWidth()-210,43,son$ EndIf Next Flip 0 Wend End |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, und jetzt machste diese song_ima-Zeile unter die Zeile mit PlayMusic()....
BlitzBasic: [AUSKLAPPEN] .... |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann kommt ab dem 2.Titel die Fehlermeldung "Object Does Not Exist", bei der Zeile,
Code: [AUSKLAPPEN] channel=PlayMusic("sfx\songs\"+s\name$)
|
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
das liegt aber 100% nicht an der Timer-Zeile!
Hast Du denn auch schon die Variable S GLOBAL definiert? Außerdem ist die For/Each/Next Unsinn und auch unnötig, oder? Du steppst ja schon mit dem AFTER S immer eins weiter. |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ohne die "For s.song = Each song" Zeile, klappts ja auch, aber dann wird nicht bei jedem Song das Bild (und der Text) angezeigt, sondern nur beim Ersten. | ||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
es hat aber der eine Fehler nix mit dem andern zu tun.
Wo änderst Du denn Title? Wie erfährst du den? Das muss doch auch nach der PlayMusic()-Zeile sein! |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, so klappt es nicht:
Code: [AUSKLAPPEN] Graphics 1024,768,32,1
SetBuffer BackBuffer() SeedRnd MilliSecs() Global title = LoadImage("gfx\song.png") timer = CreateTimer(60) Type song Field name$ End Type ;Songs auslesen und verarbeiten Global musicV = ReadDir("sfx\songs") Repeat Local SourceFile$ = NextFile(musicV) If SourceFile$ = "" Then Exit If Lower(Right(SourceFile$, 4)) = ".wav" Then s.song = New song s\name$ = SourceFile$ EndIf Forever CloseDir(musicV) ;Local song_ima = MilliSecs()+5000 s = First song While Not KeyDown(1) WaitTimer(timer) If Not ChannelPlaying(channel) Then channel=PlayMusic("sfx\songs\"+s\name$) song_ima = MilliSecs()+5000 son$ = s\name$ s = After s If s=Null Then s=First song EndIf For s.song = Each song If song_ima > MilliSecs()Then DrawImage(title,GraphicsWidth()-300,0) Text GraphicsWidth()-210,43,son$ EndIf Next Flip 0 Wend End Und so schon, bloß halt das nur beim ersten Titel das Bild(+Text) kommt: Code: [AUSKLAPPEN] Graphics 1024,768,32,1
SetBuffer BackBuffer() SeedRnd MilliSecs() Global title = LoadImage("gfx\song.png") timer = CreateTimer(60) Type song Field name$ End Type ;Songs auslesen und verarbeiten Global musicV = ReadDir("sfx\songs") Repeat Local SourceFile$ = NextFile(musicV) If SourceFile$ = "" Then Exit If Lower(Right(SourceFile$, 4)) = ".wav" Then s.song = New song s\name$ = SourceFile$ EndIf Forever CloseDir(musicV) ;Local song_ima = MilliSecs()+5000 s = First song While Not KeyDown(1) WaitTimer(timer) If Not ChannelPlaying(channel) Then channel=PlayMusic("sfx\songs\"+s\name$) song_ima = MilliSecs()+5000 son$ = s\name$ s = After s If s=Null Then s=First song EndIf ;For s.song = Each song If song_ima > MilliSecs()Then DrawImage(title,GraphicsWidth()-300,0) Text GraphicsWidth()-210,43,son$ EndIf ;Next Flip 0 Wend End Was meintest du, dass das dadrunter muss? (Achja, ich verändere garnichts mehr, das ist der Komplette Code.) |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
wieviele songs befinden sich denn gerade in dem Verzeichnis?
Teste mal direkt nach dem Laden: BlitzBasic: [AUSKLAPPEN] ... und sag mir was du siehst bis dahin Du willst schon, dass immer nur der Song angezeigt wird, der aktuelle spielt, oder? |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also im Moment sind 6 Songs im Verzeichnis, die er mir auch alle mit Print anzeigt.
Und ja, ich möchte das er imemr den aktuellen anzeigt. //EDIT: Selbst SO zickt er rum: Code: [AUSKLAPPEN] Graphics 1024,768,32,1
SetBuffer BackBuffer() SeedRnd MilliSecs() Global title = LoadImage("gfx\song.png") timer = CreateTimer(60) Type song Field name$ End Type ;Songs auslesen und verarbeiten Global musicV = ReadDir("sfx\songs") Repeat Local SourceFile$ = NextFile(musicV) If SourceFile$ = "" Then Exit If Lower(Right(SourceFile$, 4)) = ".wav" Then s.song = New song s\name$ = SourceFile$ EndIf Forever CloseDir(musicV) ;For s.song = Each song ; Print s\name$ ;Next ;WaitKey() Local song_ima = MilliSecs()+5000 s = First song While Not KeyDown(1) WaitTimer(timer) If Not ChannelPlaying(channel) Then channel=PlayMusic("sfx\songs\"+s\name$) song_ima = MilliSecs()+5000 ;son$ = s\name$ s = After s If s=Null Then s=First song EndIf For s.song = Each song ;If song_ima > MilliSecs()Then ;DrawImage(title,GraphicsWidth()-300,0) ;Text GraphicsWidth()-210,43,s\name$ ;EndIf Next Flip 0 Wend End |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
hau den Waitkey() wieder raus, ersetze mal die zeile
BlitzBasic: [AUSKLAPPEN] If Not ChannelPlaying(channel) Then zu testzwecken durch BlitzBasic: [AUSKLAPPEN] ;If Not ChannelPlaying(channel) Then dann kannste die Lieder "von Hand" weiterschalten berichte, was passiert |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das klappt wunderbar, WENN die "For s.song = Each song" Zeile raus ist, wenn nicht kommt der übliche Fehler. ![]() |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, das hab ich schon gesagt....
das FOR/EACH/NEXT ist Quatsch. Also, wenn Du mit Hand schaltest ist alles OK. Aber wenn du die ChannelPlaying() wieder einschaltest, ist es nicht OK? so: BlitzBasic: [AUSKLAPPEN] If Not ChannelPlaying(channel) Then |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn man den Channel als Field im Type definiert, kann man problemlos überprüfen welches Lied gerade gespielt wird... | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh, da haben wir wohl aneinander vorbei geredet.
Ich dachte das "For..." ist wichtig, damit bei jedem Song 5sec lang das Bild und der Text angezeigt wird? (Achja, sobald ich For... weglasse funktionierts immer wunderbar, bloß dann habe ich nur beim 1. Song das Bild(+Text) angezeigt! Ich brauche das aber bei jedem Song am Anfang 5sec lang!) |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
also noch mal von vorne, nox!!! Du bist ja richtig beratungsresistent!
das FOR/EACH ist Quatsch das S%, Song_Ima%, Son$ ist alles GLOBAL am Anfang des Codes das Laden testest Du mit dem KeyHit() läuft es so:? BlitzBasic: [AUSKLAPPEN] ... |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Denn mein Code funktioniert schon lange! ![]() Danke Midimaster, für deine ausführliche Hilfe und deine Geduld! Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
was willst Du damit sagen:
Zitat: Denn mein Code funktioniert schon lange!
![]() Heißt das, du hast mich die ganze Zeit verarscht? |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein! Auf keinen Fall!
Ich habe bloß eine Zeile im Code vergessen! |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group