Musik stoppen - Button funktioniert nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

DATIS

Betreff: Musik stoppen - Button funktioniert nicht

BeitragFr, Aug 18, 2006 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Blitzer!
Entschuldigung, aber heute vertrage ich mich einfach nicht mit Buttons. Komme auch hier gleich zur Sache, aber erstmal das Problem: Ich habe ein ganz simples Prog, das einfach nur Musik abspielt. Mit einem Stop-button kann man die Musik pausieren und nochmal ein Klick drauf und es geht weiter. Problem bei der Sache ist nun ImagesCollide. Es funktioniert nicht:
Code: [AUSKLAPPEN]
Repeat
Cls
mh=MouseHit(1)
DrawImage newbg,0,0
If musstop=0 Then DrawImage stop01,350,50
If musstop=1 Then
DrawImage stop02,350,50
temptime=MilliSecs()-a
PauseChannel song
EndIf
DrawImage img0,0,0
DrawImage pointer,MouseX(),MouseY()
If ImagesCollide(pointer,MouseX(),MouseY(),0,stop01,350,50,0) And mh=1 And musstop=0 Then musstop=1
If ImagesCollide(pointer,MouseX(),MouseY(),0,stop02,350,50,0) And mh=1 And musstop=1 Then
musstop=0
ResumeChannel song
EndIf
Flip
fgg=MilliSecs()-a
b=fgg-temptime
If KeyHit(1) Then Exit
Until b>96000
End


Wenn ich auf den Button klicke passiert gar nichts.
Danke für die Hilfe schonmal im Vorraus.
Frauen und Technik?
Männer und BHs?

Beides möglich.
  • Zuletzt bearbeitet von DATIS am Sa, Aug 19, 2006 12:43, insgesamt 2-mal bearbeitet

garret

BeitragSa, Aug 19, 2006 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Fehler liegt wahrscheinlich hier:
Code: [AUSKLAPPEN]

If ImagesCollide(pointer,MouseX(),MouseY(),0,stop01,350,50,0) And mh=1 And musstop=0 Then musstop=1
If ImagesCollide(pointer,MouseX(),MouseY(),0,stop02,350,50,0) And mh=1 And musstop=1 Then
musstop=0


In der ersten Abfrage wird musstop auf eins gesetzt, in der zweiten If musstop=1 abgefragt. Hier ist sie ja durch die erste Bedingung schon 1 und wird dort wieder auf 0 gesetzt Wink

Am Besten also alles zusammenfassen:

Code: [AUSKLAPPEN]

If ImagesCollide(pointer,MouseX(),MouseY(),0,stop02,350,50,0) And mh=1 musstop = 1 - musstop


musstop = 1 - musstop lässt die Variable dann immer zwischen 0 und 1 wechseln, wenn die Bedingungen erfüllt sind. Setz' einfach für musstop im Kopf mal 0 bzw. 1 ein und sieh' dir an, was dabei heraus kommt Wink

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

DATIS

Betreff: naja, trotzdem danke!

BeitragSa, Aug 19, 2006 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke garret!
Aber der Stop-button funktioniert trotzdem nicht.
Wenn ic auf Stop! klicke (stop01) pausiert das Lied, wenn ich aber auf Weiter! (stop02) klicke, pausiert die Musik immernoch.
Aktuell ist der Quelltext also:
Code: [AUSKLAPPEN]
Repeat
Cls
mh=MouseHit(1)
DrawImage newbg,0,0

If musstop=0 Then
DrawImage stop01,350,50
ResumeChannel song
EndIf

If musstop=1 Then
DrawImage stop02,350,50
temptime=MilliSecs()-a
PauseChannel song
EndIf

DrawImage img0,0,0
DrawImage pointer,MouseX(),MouseY()
If ImagesCollide(pointer,MouseX(),MouseY(),0,stop01,350,50,0) And mh=1 And musstop=0 Then musstop=1-musstop
Flip
fgg=MilliSecs()-a
b=fgg-temptime
If KeyHit(1) Then Exit
Until b>96000
End
Frauen und Technik?
Männer und BHs?

Beides möglich.

DATIS

Betreff: Ich Idiot!

BeitragSa, Aug 19, 2006 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, ich habe den dummen Fehler entdeckt:
Code: [AUSKLAPPEN]
If ImagesCollide(pointer,MouseX(),MouseY(),0,stp,350,50,0) And mh=1 Then musstop=1-musstop

So muss es heißen.
Weil musstop nur gewechselt wird, wenn musstop vorher 0 ist. Ist musstop 1 funktioniert es also auch nicht.

Danke für die Hilfe und entschuldigung für meine dummen Fehler![/code]
Frauen und Technik?
Männer und BHs?

Beides möglich.

Schranz0r

BeitragSa, Aug 19, 2006 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso machst du den Maushit in eine Variable rein?
das sollte gehen, habs jetzt nicht getestet, aber versuchs mal Cool

BlitzBasic: [AUSKLAPPEN]

...
stpX= 300
stpY= 50
pointerX = MouseX()
pointerY = MouseY()

If ImagesOverlap (pointer,pointerX pointerY stp,stpX,stpY) And MouseHit(1) Then
musstop = 1
EndIf
...


die X und Y von dem Button in eine Variable Speichern dann sollte es gehen

Holzchopf

Meisterpacker

BeitragSa, Aug 19, 2006 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
/slap Schranz0r

Dass man MouseX(), MouseY(), MouseHit(1) und was man sonst noch so alles braucht am Anfang der Schleife in Variablen speichert, versucht man hier (besonders im Beginners-Corner) den Leuten immer wieder einzutrichtern.
Meistens klappts auch, weil sie die Erklärung (die recht einfach ist) auch verstehen.
(Schau dich sonst mal hier ein bisschen um, fast jeder zweite Thread behandelt dieses Problem. Hier gehts allerdings nicht um das, da DATIS das von Anfang an korrekt gemacht hat.)

-_-
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Schranz0r

BeitragSa, Aug 19, 2006 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
/slap Holzchopf zurück Very Happy

Der DATIS sollte sich ja hauptsächlich auf den Code konzentrieren Smile
Das mit Variablen , hab ich ja nur soooooooo nebenbei gesagt Very Happy

garret

BeitragSa, Aug 19, 2006 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Wurde vor knapp 2 Tagen genau hier erläutert: https://www.blitzforum.de/foru...hp?t=19410

DATIS hat's ja auch gleich umgesetzt. Ein gelehriger Schüler.

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

DATIS

Betreff: Buttons - okay... Timer - naja...

BeitragSo, Aug 20, 2006 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Jep, danke.
Soweit ist das Problem mit den Buttons ja jetzt geklärt, aber ich habe probleme mit dem Timer. Der Funktioniert auch nicht. Meine Überlegung war:

-Wenn man auf Stop klickt wird musstop aktiviert (Variable als 1 gesetzt)
-Wenn musstop aktiviert ist, wird die Hintergrundmusik (song) pausiert.
-Aber: es soll auch eine Zeit "gestoppt" werden, damit ich diese Zeit am Ende von der Variablen "b" abziehe. "b" ist auch eine gestoppte Zeit.
-Wenn "b" dann 96000 (song ist nach 96 Sekunden zuende) ist, wird die Schleife beendet.

Allerdings klappt es nicht so wirklich. Auch für dieses Problem bedanke ich mich schon für die Hilfe.
Frauen und Technik?
Männer und BHs?

Beides möglich.

garret

BeitragSo, Aug 20, 2006 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde dir nicht empfehlen, mit festen Zeiten zu arbeiten, wie 96 Sekunden. Erstelle lieber einen Channel für deine Musik und frage dort ChannelPlaying() ab.


MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

DATIS

Betreff: Oh Super!

BeitragSo, Aug 20, 2006 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked


Einfach nur Shocked

Man war ich platt, als ich ChannelPlaying in deinem Post gesehen habe!
Nach so einem Befehl habe ich gesucht, aber nicht gefunden.
Danke!
Frauen und Technik?
Männer und BHs?

Beides möglich.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group