2 background dingen tegelijk afspelen

Status
Niet open voor verdere reacties.

ido435

Gebruiker
Lid geworden
10 nov 2010
Berichten
674
hallo

ik ben een game aan het maken in visual basic
maar nu wil ik voice toevoegen met een achtergrond geluid maar het achtergrond geluid moet door spelen maar de stemmen moeten er boven uit komen
hoe kan ik doen in visual basic?


m.v.g
ido
 
Hoi,

Misschien een backgroundworker? Of een aparte thread voor het achtergrond geluid?

Voor een backgroundworker kan je even naar de volgende twee linkjes kijken:

Voor een aparte thread kan je even naar de volgende linkjes kijken:

Ik hoop dat je hiermee een eind verder komt! :)
MartinJM
 
ik heb op youtube ook nog even gezocht met de informatie die u gaf
maar blijkbaar heb ik iets fout gedaan

[SQL]Public Class head_menu
Dim i As Integer = 0
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
level_1.Show()
Me.Hide()
End Sub

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
level_1.Show()
Me.Hide()
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Do Until i = "100"
If BackgroundWorker1.WorkerSupportsCancellation = True Then
My.Computer.Audio.Play(My.Resources.main_song, AudioPlayMode.Background)

Exit Sub
End If
ProgressBar1.Value = i
BackgroundWorker1.ReportProgress(i)
System.Threading.Thread.Sleep(1)



Loop
End Sub

Private Sub head_menu_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BackgroundWorker1.RunWorkerAsync()
Timer1.Start()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
ProgressBar1.Increment(i)
i = i + 1
Label4.Text = 0
End Sub
End Class[/SQL]

wat is er hier fout aan
 
Hoi,

Mag ik je als eerst vragen waarom je de code in SQL-tags hebt geplaatst? Je kan beter de CODE-tags of de CPP-tags gebruiken voor VB.NET codes.

Verder gebruik ik zelf eigenlijk nooit backgroundworkers, dus weet ik er niet zo heel veel vanaf. Wat ik wel weet, is dat je in threads het volgende niet zomaar kan uitvoeren:
Code:
ProgressBar1.Value = i
Maar ik weet dus niet zeker of dat bij backgroundworkers ook zo het geval is. Volgens MSDN moet je het geloof ik ook anders doen. Kijk maar even naar het volgende voorbeeld: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx#exampleToggle (staat in de eerste link over backgroundworkers die ik je heb gegeven).
Daarin gebruiken ze het 'ProgressChanged'-event van de backgroundworker om te zorgen dat een label op het percentage staat. Ik denk dat jij ook zoiets moet doen (het tweede voorbeeld gaat ook over een progressbar).

Het bovenstaande is slechts een gok van mij, omdat je alleen hebt verteld dat 'je iets fout gedaan hebt'. Met deze hoeveelheid aan informatie is het vrij moeilijk om te bedenken wat er precies fout is. Als mijn vermoeden goed is, zal het na het aanpassen van het bovenstaande goed werken, maar het kan zijn dat daar de fout niet in zit.

MartinJM
 
dat heb ik aangepast en nu werkt het nog niet helemaal
als ik nu een ander geluid wil activeren werkt die nog niet :(
 
Hallo,

Ik kan vanuit hier niet zien waarom het niet werkt... Je zal me toch iets meer informatie moeten geven :p

Ik heb toch ook nog wat meer informatie opgezocht op msdn, maar daar stond helaas niks over het afspelen van twee geluiden tegelijkertijd. Wel stond daar een makkelijkere manier om geluiden op de achtergrond af te spelen, dus je hebt eigenlijk helemaal geen backgroundworker nodig.

Je kan gewoon een van de twee volgende lijnen gebruiken om een geluid op de achtergrond af te spelen terwijl de rest van de code gewoon uitgevoerd wordt:
[CPP]My.Computer.Audio.Play(My.Resources.main_song, AudioPlayMode.Background)
My.Computer.Audio.Play(My.Resources.main_song, AudioPlayMode.BackgroundLoop)[/CPP]
Voor meer informatie kan je hier kijken: http://msdn.microsoft.com/en-us/library/6y3efyhx(v=vs.90).aspx.

Sorry dat ik eerst kwam met de backgroundworker, wat je tijd en moeite heeft gekost :eek:

MartinJM

[edit]
Toch nog wat verder gekeken en dit tegengekomen: http://social.msdn.microsoft.com/Forums/vstudio/en-US/c29877ef-1466-49fd-a508-ec7e9b664237/play-sound-in-background-play-another-sound?forum=vbgeneral.
Daarin staat dat het niet kan met de methode die je probeert te gebruiken en geeft een andere methode die wel zou moeten werken.

Ik hoop dat dat de oplossing is!
[/edit]
 
Laatst bewerkt:
ik heb het geprobeerd en mij hele script zal ik even hier onder zetten
van de background worker staat er nog wel in :p
[SQL]Public Class head_menu
Dim i As Integer = 0
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
level_1.Show()
Me.Hide()
End Sub

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
level_1.Show()
Me.Hide()
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Do Until i = "100"
If BackgroundWorker1.WorkerSupportsCancellation = True Then

Exit Sub
End If
ProgressBar1.Value = i
BackgroundWorker1.ReportProgress(i)
System.Threading.Thread.Sleep(1)



Loop
End Sub

Private Sub head_menu_Load(sender As Object, e As EventArgs) Handles MyBase.Load
My.Computer.Audio.Play(My.Resources.main_song, AudioPlayMode.BackgroundLoop)

BackgroundWorker1.RunWorkerAsync()
Timer1.Start()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
ProgressBar1.Increment(0)
i = i + 1
Label4.Text = 0
End Sub

Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click
End
End Sub

Private Sub Label3_Click(sender As Object, e As EventArgs) Handles Label3.Click
End
End Sub
End Class[/SQL]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan