Sound abspielen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

pile

Betreff: Sound abspielen

BeitragMo, März 19, 2007 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, hab wieder n Problem

Wenn ich ne Taste drücke möchte ich das n Sound gespielt wird. Da sich das ganze aber natürlich in ner Schleife befindet, fängt der Sound nach ein paar Millisekundne wieder von vorn an. Weiß einer Rat?

Danke.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%
 

ETsoftware

BeitragMo, März 19, 2007 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
sound=LoadSound("Sound.wav")

Repeat
 If Keyhit(1) Then PlaySound sound
Until Keyhit(2)

Du musst, wenn der Befehl nur einmal nach einander abgefragt wird KeyHit statt KeyDown verwenden.
Sonst mit einer Variable abfragen, ob er gerade abgespielt wird.
ETsoftware 2007

pile

BeitragMo, März 19, 2007 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Es war ja mit KeyHit aber trotzdem wurde es mehrfach gespielt. Liegt wohl an meiner schlampigen Programmstruktur.
Habs jetzt so gemacht, dass ich den Sound als Kanal abspielen lasse und nach ein paar Millisekunden mit StopChannel anhalten lasse.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

Shogo

BeitragMo, März 19, 2007 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich wuerde es so machen.

Code: [AUSKLAPPEN]
sound=LoadSound("Sound.wav")

Repeat
 If Keyhit(1) And CHANNELPLAYING(sound) = 0 Then PlaySound sound
Until Keyhit(2)


Channelplaying ueberbrueft ob der Sound gerade abgespielt wuerd.
So wuerd der Sound nur gestartet wenn er noch nicht laeuft.

Mfg Shogo

Edit: Bei Keyhit wuerde ich so vorgehen damit es geht.

Code: [AUSKLAPPEN]
sound=LoadSound("Sound.wav")
global ESC_TASTE

Repeat

ESC_TASTE = KeyHit(1)

 If ESC_TASTE = true And CHANNELPLAYING(sound) = 0 Then PlaySound sound

Until Keyhit(2)


KeyHit nur einmal pro Schleife abfragen sonst kommt es zu fehlern.

StepTiger

BeitragMo, März 19, 2007 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist so nicht richtig.
ChannelPlaying überprüft, ob ein Channel gerade etwas abspielt. Das müsste dann so heißen:
Code: [AUSKLAPPEN]
sound=LoadSound("Sound.wav")

Repeat
 If Keyhit(57) And CHANNELPLAYING(channel) = 0 Then channel=PlaySound(sound)
Until Keyhit(1)


Hier mit Leertaste.
Wieso auch 1 zum Beenden? Normal ist Escape. IMHO sieht While wend aber schöner aus.

Wenn Shogo Posts editieren darf, darf ich das auch.
*EDIT*
Warum sollte man für eine einzige Abfrage eine Variable nutzen? Den Sinn dabei verstehe ich nicht so ganz.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

pile

BeitragMo, März 19, 2007 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat leider trotzdem nicht geklapt. Der Sound kam total verzert rüber. Ich weiß nicht woran das liegt. Naja zum Glück klapt das mit stopchannel da die sounds nicht sonderlich lang sind.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group