wieder problem mit sound abspielen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Affje

Betreff: wieder problem mit sound abspielen

BeitragSa, Mai 08, 2004 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ich mache an dieser geschichte bestimmt schon 2 monate rum, aber ich bekomms net hin:

ich habe einen soundbutton. wenn die musik läuft und ich draufdrücke, dann soll die musik ausgehen. bei nochmaligen draufdrücken, soll die musik wieder anfangen zu spielen. doch nun die frage:
wie geht das, bzw. was mache ich falsch??

mein code:

Code: [AUSKLAPPEN]

;*Ilendurs Vermächtnis, ein Spiel für die Drachengarde*

Graphics 1024, 768, 32, 1
SetBuffer BackBuffer()
Text 10, 10,  "Lade..."
;Laden der Bilder und des Sounds
Hintergrundbild = LoadImage("Daten\Bilder\Menu.jpg")
Cursor = LoadImage("Daten\Bilder\Cursor.bmp")
Beenden = LoadImage("Daten\Bilder\Beenden.jpg")
Beenden_Over = LoadImage("Daten\Bilder\Beenden_Over.jpg")
Credits = LoadImage("Daten\Bilder\Credits.jpg")
Credits_Over = LoadImage("Daten\Bilder\Credits_Over.jpg")
Intro = LoadImage("Daten\Bilder\Intro.jpg")
Intro_Over = LoadImage("Daten\Bilder\Intro_Over.jpg")
Beginnen = LoadImage("Daten\Bilder\Beginnen.jpg")
Beginnen_Over = LoadImage("Daten\Bilder\Beginnen_Over.jpg")
Soundbutton = LoadImage("Daten\Bilder\Soundbutton.jpg")
Soundbutton_Over = LoadImage("Daten\Bilder\Soundbutton_Over.jpg")
Sound = LoadSound("Daten\Musik.mp3")
Soundkanal = PlaySound(Sound)
Musik = 1






;das Hauptmenü
While Not KeyHit(1)
Maustaste = MouseHit(1)
DrawImage Hintergrundbild, 0, 0
DrawImage Beenden, 580, 654
DrawImage Credits, 644, 513
DrawImage Intro, 710, 372
DrawImage Beginnen, 785, 230
DrawImage Soundbutton, 107, 639

   If Musik = 1 Then
         If ChannelPlaying(Soundkanal) = 0 Then
      DrawImage Soundbutton, 107, 639
      PlaySound(Sound)
   EndIf
   EndIf
         
   If Musik = 0 Then
      DrawImage Soundbutton_Over, 107, 639
      StopChannel(Soundkanal)
   EndIf

   If ImagesOverlap(Cursor, MouseX(), MouseY(), Beenden, 580, 654) And Maustaste = 1 Then End
   
   If ImagesOverlap(Cursor, MouseX(), MouseY(), Beenden, 580, 654) Then DrawImage Beenden_Over, 580, 654
      
   If ImagesOverlap(Cursor, MouseX(), MouseY(), Credits, 644, 513) Then
   DrawImage Credits_Over, 644, 513
   EndIf
   
   If ImagesOverlap(Cursor, MouseX(), MouseY(), Intro, 710, 372) Then
   DrawImage Intro_Over, 710, 372
   EndIf
   
   If ImagesOverlap(Cursor, MouseX(), MouseY(), Beginnen, 785, 230) Then
   DrawImage Beginnen_Over, 785, 230
   EndIf
   
   If ImagesOverlap(Cursor, MouseX(), MouseY(), Soundbutton, 107, 639) Then
      If Maustaste = 1 Then
         Musik = Not Musik
      EndIf
   EndIf
   
DrawImage Cursor, MouseX() + MouseXSpeed(), MouseY() + MouseYSpeed()
Flip
Wend
www.drachengarde.tk
Guckst da Hier

Hubsi

BeitragSa, Mai 08, 2004 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit StopChannel kann man Sound stoppen, mit PauseChannel pausieren und ResumeChannel einen pausierten Sound weiterspielen.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

BladeRunner

Moderator

BeitragSa, Mai 08, 2004 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm... kann keine größeren Fehler entdecken.
Tip: lege mousex() und Mousey() in Variablen ab zu beginn deiner Hauptschleife- die Wiederholten Funktionsaufrufe kosten viel Zeit.

Code: [AUSKLAPPEN]
 If Musik = 1 Then
         If ChannelPlaying(Soundkanal) = 0 Then
      DrawImage Soundbutton, 107, 639
      PlaySound(Sound)
   EndIf
   EndIf

Hier fällt mir auf dass der Butoon nur gezeichnet wird wenn keine Musik läuft. das würde ich vor die Channelplaying()-Abfrage setzen.

Code: [AUSKLAPPEN]
DrawImage Cursor, MouseX() + MouseXSpeed(), MouseY() + MouseYSpeed()

Ist nit nötig, da mousex und mousey sowieso die aktuellen Mousepositionen haben. Du addierst also zu der tatsächlichen Position die Relative Bewegung. Das könte natürlich dazu führen dass dein Mauszeiger nie "richtig" auf den Soundbuttons zu stehen kommt.
Drawimage Cursor, mousex(),mousey() reicht vollkommen (oder noch besser mit Variablen, siehe oben.)

Letzter Tip: da deine Menupunkte ja fixe positionen haben, ist es sicher schneller auf deren x und y- Grenzen zu prüfen denn mit (langsamem) Imagescollide() vorzugehen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group