Probleme mit sound

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

sven123

Betreff: Probleme mit sound

BeitragSa, März 13, 2004 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier der Code!!Code: [AUSKLAPPEN]
If MouseDown(1) Then
DrawImage waffemitmü,Fx,Fy-15
soundakstop=1
EndIf
;
If soundakstop=1 Then
PlaySound schusssound
soundakstop=0
EndIf


wenn ich mehrmal auf die maustaste drücke dann kommt nur noch so ein gesirre.Ich muss es also so mache das der soun immer ein bischen vertzögert abgespielt wird.Ich habe jetzt zwei ansätze gemacht die beide nicht gingen!
Arrow Mit createtimer hat aber zudem das es nich ging das spiel verlangsamt
Arrow Miz einem eigenen timer gin aber auch nicht!
Habt ihr vieleicht eine Lösung für mein Problem!
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken

Kryan

BeitragSa, März 13, 2004 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
schreib doch mal, wie du es mit deinem eigenen timer machst, eigentlich so: If soundakstop=1 And MilliSecs() Mod 10 Then ...

...es gibt auch den befehl channelplaying, der überprüft, ob ein sound grade abgespielt wird oder nicht...
http://www.blitzbase.de/befehl...laying.htm
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

sven123

BeitragSa, März 13, 2004 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
So hab ichs gemacht!Code: [AUSKLAPPEN]

temp_time4=1*1.5
time5=MilliSecs()
temp2=0
If temp2=1 Then
If MilliSecs()-time5>1000
temp_time4=temp_time4-1
time5=MilliSecs()
EndIf
EndIf

If MouseDown(1) Then
DrawImage waffemitmü,Fx,Fy-15
soundakstop=1
EndIf
;
If soundakstop=1 Then
temp2=1
if temp_time4=0 then
PlaySound schusssound
endif
soundakstop=0
EndIf
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken

Kryan

BeitragSa, März 13, 2004 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
machs so:Code: [AUSKLAPPEN]
If MouseDown(1) Then
DrawImage waffemitmü,Fx,Fy-15
soundakstop=1
EndIf
;
If soundakstop=1 And (MilliSecs() Mod 10) = 0Then
PlaySound schusssound
soundakstop=0
EndIf

bei Mod 10 kann man die 10 auch verändern (erhöhen) wenn immer noch dieses problem existiert
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

BladeRunner

Moderator

BeitragSa, März 13, 2004 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich halte Kryans Code nit für sehr effektiv, im Gegenteil, er kann gewaltig nach hinten los gehen, da mit diesem (millisecs() mod 10) geprüft wird ob volle 100stel Sekunden vorliegen. sollte aus irgendeinem Grund die Dauer der Mainloop etwas ungünstig liegen, kann es sein dass diese Schleife niemals ausgeführt wird.
Prüfe besser mit channelplaying ob der Sound noch läuft und wenn nein erlaubst du ein Neues abspielen.
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

Kryan

BeitragSa, März 13, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If soundakstop=1 And ChannelPlaying(schusssound)=0 Then
PlaySound schusssound
soundakstop=0
EndIf

Wollt ich ja auch zuerst nehmen, aber für einen eigenen timer wollt ich das andre erstmal vorziehen
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

BladeRunner

Moderator

BeitragSa, März 13, 2004 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm. auch das wird nicht funktionieren, Kryan,
da Du den Sound nur abspielen läßt wenn er schon gespielt wird.
Korrekt wäre ...and not channelplaying(schusssound) then ....
MfG

EDIT: mir geht es ja im Wesentlichen darum, dass man (sollte man die Möglichkeit dazu besitzen) seine Codes auf Funktion prüfen sollte bevor man sie auf die Menschheit loslässt. Grade das ist bei Deinen Codes aber häufiger nicht der Fall, und der Schaden den Du damit bei Neulingen durch Verwirrung anrichtest überwiegt den Lerneffekt sicher.
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
  • Zuletzt bearbeitet von BladeRunner am Sa, März 13, 2004 18:09, insgesamt einmal bearbeitet

Kryan

BeitragSa, März 13, 2004 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
habe gerade eben =0 dazu editiert, aber schon ne minute her!
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Hubsi

BeitragSa, März 13, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würds so machen:
Code: [AUSKLAPPEN]
If MouseDown(1)
  If MilliSecs()>timer+30
    timer=MilliSecs()
    channel=PlaySound(sound)
  EndIf
EndIf

Hat den Vorteil das Du die Sounds etwas überschneiden lassen kannst, was sich bei einem Schnellfeuergewehr besonders cool anhört Smile
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Kryan

BeitragSa, März 13, 2004 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@BladeRunner: Und was ist, wenn man gerade im Urlaub an einem fremden Pc ohne BlitzBasic ist? (sowie ich)
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Kryan

BeitragSa, März 13, 2004 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@BladeRunner: Und was ist, wenn man gerade im Urlaub an einem fremden Pc ohne BlitzBasic ist? (sowie ich)
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

BladeRunner

Moderator

BeitragSa, März 13, 2004 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann kann man ja schon vorher darauf hinweisen, daß der Code nicht getestet wurde.
Oder man hält sich mit dem Posten zurück, wenn man sich nit ganz sicher ist.


Natürlich meine ganz persönliche Meinung.

Abgesehen davon hast du sicher viel Urlaub, denn du postest wie schon gesagt recht häufig Codes die noch einer Überprüfung bedurft hätten.
Es ist nix dagegen einzuwenden, anderen helfen zu wollen, aber etwas nachdenken schadet auch dann nicht.
Gruß
BladeRunner
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

Kryan

BeitragSa, März 13, 2004 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
war ja auch nicht bös gemeint Rolling Eyes
zufällig haben onkel und tante hier auch internet Very Happy und dann draf mans doch nutzen!

sven, wie hast dich nun entschieden?
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

blitzblaster

BeitragMi, Apr 14, 2004 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !

Sorry das ich hier poste, aber ich bin etwas zu blöd für einfache Sachen.

Also hier mein Problem:

Ich habe ein Button den ich mit If Imageoverlap ansteuer, so nun spielt beim überlappen des Mausebuttons der Sound dazu ab. Dieser wird aber wie oben von Sven123 beschrieben wie ein rrrrrrrrr Soundabgespielt. Nun habe ich deswegen eine Schleife eingebaut und millisecs() eingebunden. Toll, jetzt spielt der Sound angenehm im Rhytmus ab. Zum Hänker nochmal, er soll aber wirklich nur ein einziges mal abgespielt werden. Und dann soll er aufhören, es sei denn, man geht von dem Button runter und wieder rauf, dann soll er wieder nur 1 mal abgespielt werden. 1000 Variationen habe ich ausprobiert, mal mit Channelplaying mal ohne. Ich werde noch irre hier. Sowas aber auch....please help me..... Embarassed

Gruß der doofe Blitzblaster

Hubsi

BeitragMi, Apr 14, 2004 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Machs so:
Code: [AUSKLAPPEN]
; Pseudo
If Maus_auf_button
  If Not playing channel=PlaySound(sound)
  playing=True
Else
  playing=False
EndIf

Zitat:
Gruß der doofe Blitzblaster
Sei nicht so hart zu Dir. Das erledigen wir schon Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

blitzblaster

BeitragMi, Apr 14, 2004 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Hubsi:

ähm ich habe das jetzt noch nicht ausprobiert, aber soweit ich das sehe, dann spielt er ja den Sound auch immer wieder ab, wenn ich die Mause auf dem Button lasse. Hmm ich werde es aber trotzdem ausprobieren. Wenn das aber gehen sollte, dann gebe ich Dir einen aus. Morgen poste ich ob es gegangen ist. Wenn ja, bekommst Du eine Grafik in 2D oder einen Sound von mir. Oder ein kleines 3D Mesh.

Gruß Blitzblaster

Hubsi

BeitragMi, Apr 14, 2004 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht deshalb, weil der der Sound nur gespielt wird wenn playing=False ist. Geht die Maus auf den Button wird playing=True und erst wieder False wenn die Maus den Button wieder verlässt, was Voraussetzung zum spielen des Sounds ist. Gleich noch eine kleine Verbesserung, damit sich die Sounds nicht überschneiden können:
Code: [AUSKLAPPEN]
; Pseudo
If Maus_auf_button
  If Not playing And Channelplaying(channel)=0 channel=PlaySound(sound)
  playing=True
Else
  playing=False
EndIf
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

4pac

BeitragMi, Apr 14, 2004 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Na, DAS interessiert mich ja auch mal...
 

blitzblaster

BeitragDo, Apr 15, 2004 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Hubsi: Leider haut das nicht so wirklich hin.

@ BladeRunner: Danke nochmal für Deine Hilfe. Und hier ist ein kleiner Auszug von dem Code der zum Game Catch the Thief gehört.


;----------------------------------

.buttons
notleftbutton = 0 ;Statusvariable fürs Verlassen der Buttons
If ImageRectOverlap (mouse,x,y,610,10,340,140) Then ;wenn Überschneidung
buttondown = 1 ; ->ist ein Knopf gedrückt
notleftbutton = 1 ; ->und noch nicht verlassen
End If
If ImageRectOverlap (mouse,x,y,610,155,340,140) Then
buttondown = 1
notleftbutton = 1
End If
If ImageRectOverlap (mouse,x,y,610,300,340,140) Then
buttondown = 1
notleftbutton = 1
End If
If ImageRectOverlap (mouse,x,y,610,455,340,140) Then
buttondown = 1
notleftbutton = 1
End If
If ImageRectOverlap (mouse,x,y,610,605,340,140) Then
buttondown = 1
notleftbutton = 1
End If
If Not notleftbutton Then buttondown=0 ; wenn Knopf verlassen, dann setze Variable zurück
If buttondown=True And hasplayed=False Then hasplayed=BeepIt(switch) ; Wenn knopf gedrückt & noch nicht gespielt rufe Spielfunktion auf
If buttondown= False Then hasplayed=0 ; wenn Knopf verlassen setze Spielvariable zurück

;------menü buttons-----

If ImageRectOverlap (mouse,x,y,610,10,340,140) Then DrawImage button,595,0
If ImageRectOverlap (mouse,x,y,610,155,340,140) Then DrawImage button2,594,154
If ImageRectOverlap (mouse,x,y,610,300,340,140) Then DrawImage button3,594,305
If ImageRectOverlap (mouse,x,y,610,455,340,140) Then DrawImage button4,594,449
If ImageRectOverlap (mouse,x,y,610,605,340,140) Then DrawImage button5,594,598

;------zeichnet mouse---------

DrawImage mouse,x,y

Flip


If ImageRectOverlap (mouse,x,y,610,155,340,140) Then MouseHit (1)
If ImageRectOverlap (mouse,x,y,610,300,340,140) Then MouseHit (1)
If ImageRectOverlap (mouse,x,y,610,455,340,140) Then MouseHit (1)
If ImageRectOverlap (mouse,x,y,610,605,340,140) Then MouseHit (1)


; wartet auf den Mouse Befehl----


Wend


Wend


Function BeepIt%(switch)

; diese Funktion dient als Ersatz für playsound. Sie spielt einen Sound nur wenn er noch nicht am laufen ist.
; kann im Quelltext leicht durch die If-Abfrage ersetzt werden.
; gibt bei Aufruf eine 1 zurück, um Mehrfachabspielen zu verhindern.
If Not ChannelPlaying(sw) Then sw=PlaySound (switch)
Return 1
End Function

Hubsi

BeitragDo, Apr 15, 2004 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed Stimmt Embarassed Hier nochmal überarbeitet:
Code: [AUSKLAPPEN]
If KeyDown(57)
  If playing=0 And ChannelPlaying(channel)=0 channel=PlaySound(sound)
  playing=True
Else
  playing=False
EndIf
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group