Startseite › Foren › Deutsches LiveCode-Forum › Eigener Lautstärkeregler
Schlagwörter: Lautstärkeregler
- Dieses Thema hat 64 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren, 9 Monaten von
akrages.
-
AutorBeiträge
-
-
Februar 16, 2020 um 18:54 Uhr #18959
Hallo und guten Abend.
Gibt es eine Möglichkeit einen eigenen Lautstärkeregler in Livecode nachzubauen, um die Lautstärke der Wiedergabe von .wav Dateien damit zu steuern?
-
Februar 16, 2020 um 20:20 Uhr #18961
Hallo akrages,
klar, wir können so ziemlich alles mit LC programmieren, wenn wir wissen wie! 😀
Hier ein kleiner Beispielstack aus meinen frühen Zeiten, der Dir einen Anhaltspunkt gibt:
https://major-k.de/staxx/custom_slider1.livecode.zipBei Fragen bitte fragen! 🙂
Gruß
Klaus
-
Februar 16, 2020 um 20:45 Uhr #18963
Danke, funktioniert.
Wie schaffe ich es nun, damit sich die Lautstärke gleichzeitig mit den Werten im fld „volume“ ändert“
Das steht momentan im Button „play“
-
Februar 16, 2020 um 20:45 Uhr #18964
on mouseUp pMouseButton
if the environment = „mobile“ then
if (mobileSoundOnChannel(„background“) is empty) or (mobileSoundOnChannel(„background“) is „could not find channel“) then
put (specialFolderPath(„engine“) & „/sound/background.wav“) into tPath
put „background“ into tChannelName
put „looping“ into tType –> looping Sound wird wiederholt gespielt, bis gestoppt wird „now“ Sound wird nur 1x abgespielt
mobilePlaySoundOnChannel tPath, tChannelName, tType
end if
else
play audioClip „background.wav“ looping
set the playloudness to the value of fld „volume“
##set the playLoudNess of player „background“ to 50
end if
end mouseUp -
Februar 16, 2020 um 20:58 Uhr #18965
Sollte doch so funktionieren!?
Aber ein paar Tips:
1. Benutze -> specialfolderpath(„resources“) nicht „engine“!Denn nur auf der mobilen Platform ist „engine“ zufällig identisch mit „resources“, aber eben nur da!
Wenn Du also noch eine Version für Win oder Mac Desktop erstellen willst, müsstest Du das ändern, wenn Du „resources“ nutzt, eben nicht! 🙂
2. „the value“ ist hier überflüssig, da im Feld „volume“ doch sicher eine Zahl steht, oder?
Also das hier reicht:... set the playloudness to fld "volume" ...
Aber was funktinoiert denn nicht bei Dir?
Wird die Lautstärke nicht geändert?Du kannst (und solltest vielleicht auch?) mein Beispiel nicht 1:1 umsetzen, sondern damit direkt „the playloudness“ setzen, statt wie im meinem Beispiel in ein Feld zu schteiben.
Also einen echten Volumenregler, kiegst Du das hin?Gruß
Klaus
-
Februar 16, 2020 um 21:06 Uhr #18967
Ich verstehe nicht so wirklich, wie du das meinst: (sondern damit direkt „the playloudness“ setzen).
Und zu deiner Frage: Wenn ich den „Lautstärkeregler“ bewegt habe, ändert sich die Lautstärke erst, wenn ich erneut den Button „play“ anklicke. -
Februar 16, 2020 um 21:52 Uhr #18968
Hi Akrages,
OK, in meinem Beispiel lege ich den neuen Wert für Playloundness in ein Feld mit dieser Zeile:
on mousemove x,y if darfziehen then switch case x < the left of grc "rampe_horizontal" ##set the loc of me to item 1 of the loc of me, the top of grc "rampe_horizontal" set the loc of me to the left of grc "rampe_horizontal", item 2 of the loc of me put 0 into fld "volume" break case x > the right of grc "rampe_horizontal" ##set the loc of me to item 1 of the loc of me, the top of grc "rampe_horizontal" - tAusgleich set the loc of me to the right of grc "rampe_horizontal", item 2 of the loc of me put 100 into fld "volume" break default set the loc of me to x, item 2 of the loc of me put round((x - the left of grc "rampe_horizontal")/(the width of grc "rampe_horizontal")*maxValue) into fld "volume" break end switch end if end mousemove
Wenn Du diesen „Umweg“ nun umgehen und direkt die Lautstärke setzen möchtest, schreib es so:
on mousemove x,y if darfziehen then ## Zuerst die neue Lautstärke ermitteln mit hilfe von etwas Geometrie :-) switch case x < the left of grc "rampe_horizontal" ##set the loc of me to item 1 of the loc of me, the top of grc "rampe_horizontal" set the loc of me to the left of grc "rampe_horizontal", item 2 of the loc of me put 0 into neuelautstärke break case x > the right of grc "rampe_horizontal" ##set the loc of me to item 1 of the loc of me, the top of grc "rampe_horizontal" - tAusgleich set the loc of me to the right of grc "rampe_horizontal", item 2 of the loc of me put 100 into neuelautstärke break default set the loc of me to x, item 2 of the loc of me put round((x - the left of grc "rampe_horizontal")/(the width of grc "rampe_horizontal")*maxValue) into neuelautstärke break end switch ## Und nun erst setzen: set the playloudness to neuelautstärke end if end mousemove
Gruß
Klaus
-
Februar 16, 2020 um 22:45 Uhr #18970
Hi. das ist ja echt Klasse.
funzt prima.
Vielen Dank.
Kannst du mir das auch für die rampe_vertikal umbiegen?
irgendwie schaffe ich das nicht.
Die Banane „fliegt“ immer waagrecht. -
Februar 16, 2020 um 23:32 Uhr #18971
Bitte schön:
on mousemove x,y ## Nur ausführen, wenn Maus "down" ist! if darfziehen then switch ## Wir sind schon unten, also bei 0 angekommen case y < the top of grc "rampe_vertikal" + tAusgleich set the loc of me to item 1 of the loc of me, (the top of grc "rampe_vertikal") put 0 into neuelautstärke break ## Wir sind oben, also bei 100 angekommen case y > the bottom of grc "rampe_vertikal" set the loc of me to item 1 of the loc of me, the bottom of grc "rampe_vertikal" - tAusgleich put 100 intoneuelautstärke break ## Irgendwo zwischen 0 und 100 ## Ein einfacher Dreisatz! default set the loc of me to item 1 of the loc of me, y - tAusgleich put round((y - the top of grc "rampe_vertikal")/the height of grc "rampe_vertikal"*maxValue) into neuelautstärke break end switch set the playloudness to neuelautstärke end if end mousemove
Wichtig, versuche, das Skript zu verstehen, vielleicht zunächst einmal nur den Unterschied zum Skript mit dem Feld „volume“!
Und dann die eigentliche Logik mit der dazugehörigen Mathematik/Arithemtik. Ist ätzend, geht aber nicht ohne. 😀
Bei Fragen mach ich gerne den Erklärbär!
-
Februar 19, 2020 um 20:46 Uhr #19020
Guten Abend,
ich habe jetzt eine kleine Anwendung geschrieben.
4 verschiedene „buttons“ mit unterschiedlichen .wav files (eine davon läuft als Hintergrundsound im looping.
Außerdem gibt ea 4 Lautstärkeslider.
Was ich möchte ist jetzt folgendes:
Jeder Slider soll einen dieser .wav files in der Lautstärke regeln (und nur diesen)!Mein Problem ist:
Innerhalb von Livecode funktionieren die Slieder, allerding jeder gleich, dh. ich kann mit jedem der 4 Sleider alle .wav´s in der Lautstärke regeln, was ja nicht gewünscht ist.Und auf meinem Android Handy kann ich die Slider zwar bewegen undauch die Werte des Lautstärkepegels ändern sich, aber die Lautstärke leider nicht.
Geht das vielleicht gar nicht wie ich das vorhabe?
-
Februar 19, 2020 um 20:54 Uhr #19021
Aha, Android mal wieder…
Da hast Du Pech gehabt, ein Blick ins Dictionary zeigt, daß „playloudness“ nur auf Mac/Win/Linux und iOS unterstützt wird. Und ja, „playloudness“ regelt die Gesamtlautstärke.
Wie genau spielst Du deine Sounds ab? Mit welchem Befehl?
-
Februar 19, 2020 um 21:01 Uhr #19023
Ach, sorry, hast Du ja oben geschrieben.
OK, dann ändere nur die letzte Zeile in den Skripten:... end switch ## set the playloudness to neuelautstärke mobileSetSoundChannelVolume XXX,neueLautstärke end if end mousemove
XXX dabei bitte durch den Namen Deines(r) Channels ersetzen.
-
Februar 19, 2020 um 21:06 Uhr #19025
Hallo.
Folgendes habe ich als Script in dem Button zum abspielen des Hintergrunsounds stehen:on mouseUp
##if the environment = „mobile“ then
if (mobileSoundOnChannel(„background“) is empty) or (mobileSoundOnChannel(„background“) is „could not find channel“) then
put (specialFolderPath(„engine“) & „/background.wav“) into tPath
put „background“ into tChannelName
put „looping“ into tType
mobilePlaySoundOnChannel tPath, tChannelName, tType
else
mobileStopPlayingOnChannel „background“
end if
##end if
end mouseUpDie auskommentierten Zeilen deshalb, weil der Button sowohl zum Starten der Wiedergabe als auch zum Stoppen der Wiedergabe genutzt wird. Das funktioniert aber nur auf dem Android Handy, wenn diese zwei Zeilen auskommentiert sind.
-
Februar 19, 2020 um 21:11 Uhr #19026
specialfolderpath(„resources“), wie ich oben bereits schrieb! 😎
Und was genau ist Deine Frage?
Hast Du meine letzte Änderung im Skript ausprobiert?Hinweis:
Ich besitze weder Handy noch Tablet o.ä., daher kann ich so etwas nicht testen und nur sagen, was die korrekte Systax für wasauchimmer ist. -
Februar 19, 2020 um 21:45 Uhr #19029
Ganz schön ärgerlich, als ich endlich fertig war mit meiner Nachricht an dich und den Absendenknopf angeklickt habe, war die Nachricht weg und ich musste mich neu anmelden.
Gibt es da ein Zeitfenster?-
Februar 19, 2020 um 22:07 Uhr #19032
Ganz schön ärgerlich, als ich endlich fertig war mit meiner Nachricht an dich und den Absendenknopf angeklickt habe, war die Nachricht weg und ich musste mich neu anmelden.
Gibt es da ein Zeitfenster?Nicht, daß ich wüsste, aber die Forumsoftware ist leider extrem buggy… :-/
-
-
Februar 19, 2020 um 21:48 Uhr #19030
Also ich habe dein Script nicht mehr sondern folgendes:
local topValue,tScaleFactor,Bstop,Tstop,xLoc,cY,canMove, on mouseDown # Geben Sie Ihren Startwert (oben) ein put 100 into topValue # FÜGEN SIE IHREN ENDWERT (UNTEN) EIN put 1 into bottomValue # ERHALTEN SIE DEN OFFSET DES KLICKPUNKTES UND DES ZENTRUMS DES BTN # Dies verhindert, dass der BTN springt, wenn Sie mit dem Ziehen beginnen put (the mouseV - item 2 of the loc of me) into cY # Die Zahl, die am Ende der nächsten 3 Zeilen addiert oder subtrahiert wird # dient dazu, die Position des Schiebereglers so zu ändern, dass er an der gewünschten Stelle stoppt put (the bottom of image "Vsliderbar1")-(the height of me/2)+cY +7 into Bstop put (the top of image "Vsliderbar1")+(the height of me/2)+cY -27 into Tstop put item 1 of the loc of image "Vsliderbar1" +9 into xLoc put (bottomValue-topValue)/(Bstop-Tstop) into tScaleFactor put true into canMove end mouseDown on mouseMove x,y if not canMove then exit mouseMove put min(Bstop,max(Tstop,y)) into yLoc set loc of me to xLoc,yLoc-cY # Möglicherweise müssen Sie folgende Werte hinzufügen: xLoc und yLoc #, um den Wert fld an der gewünschten Stelle zu positionieren set the loc of fld "theValue_v1" to xLoc-40,yLoc-cY+10 # Die folgende Zeile berechnet den Wert, den Sie möchten # wird auch für die tatsächliche Funktion des Schiebereglers verwendet put round((yLoc-Tstop)*tScaleFactor)+topValue into fld "theValue_v1" put round((yLoc-Tstop)*tScaleFactor)+topValue into noiseOne ##set the playloudness to noise1 mobileSetSoundChannelVolume noise1, "noiseOne" ##diese Zeile hinzugefügt end mouseMove on mouseUp put false into canMove end mouseUp on mouseRelease mouseUp end mouseRelease
Und da kommt jetzt leider eine Fehlermeldung, wenn ich den Slider bewege.
-
Februar 19, 2020 um 21:50 Uhr #19031
(Handler: can´t find handler)
-
Februar 19, 2020 um 22:17 Uhr #19034
Bitte, bitte, bitte, pack Deine Skripte in die CODE Tags, damit man sie lesen kann, siehe oben, ich habe das mal eben gemacht. Skript markieren und oben auf CODE klicken.
Der Handler „mobileSetSoundChannelVolume“ klappt nur auf dem Handy, in der IDE gibt es diese Meldung. Das wird es wohl sein, da Du hier nicht zwischen MOBILE und sonstwas verzweigst.
Aber genau das kannst und solltest Du hier machen, es reicht ja vor der Zeile „mobileSetSoundChannelVolume“:... put round((yLoc-Tstop)*tScaleFactor)+topValue into noiseOne if the environment = "mobile" then ## mobileSetSoundChannelVolume noise1, "noiseOne" ##diese Zeile hinzugefügt ## Der Channel Name in Anführungszeichen, die Variable noiseOne aber nicht! mobileSetSoundChannelVolume "noise1", noiseOne else set the playloudness to noiseone end if end mouseMove
Wenn Du eine Variable in Anführungszeichen setzt, wird sie zu einem String!
... put 10 into meineVariable put meineVariable -> 10 put "meineVariable" -> meineVariable ...
Und das möchtest Du nicht. 🙂
Kurze Frage:
Dieses neue Skript verstehst Du nun besser als meins? 😎
Meins ist erstens kürzer und zweitens nicht ganz so kompliziert. -
Februar 19, 2020 um 22:45 Uhr #19036
Ok, das mit den CODE Tags wusste ich nicht, danke.
Ja ich denke es ist etwas leichter zu verstehen. -
Februar 19, 2020 um 23:04 Uhr #19037
Vielen, vielen Danke.
Der Lautstärkeregler funktioniert jetzt in der funktioniert jetzt in der IDE und auf dem Handy. -
Februar 19, 2020 um 23:05 Uhr #19038
Oh man. bisschen durcheinander der Satz. Ist wohl die Freude.
-
Februar 20, 2020 um 14:10 Uhr #19041
Guten Tag.
wie kann ich in dieses Scripton mouseUp if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end mouseUp
noch ein
if the environment = "mobile" then
einfügen? -
Februar 20, 2020 um 14:23 Uhr #19042
Mit der Tastatur? 😀
Na, halt aussen drumherum packen:
on mouseUp if the environment = "mobile" then if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end if end mouseUp
Hinweis:
Falls Du hier und in ähnlichen Fällen keinen ELSE Fall benötigst, schreibe ich das immer so, einfach der Übersichtlichkeit halber und um unübersichtliche IF…THEN Klauseln zu vermieden:on mouseUp if the environment <> "mobile" then ## Dann einfach nicht weitermachen! :-) exit mouseup end if if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end mouseUp
-
Februar 20, 2020 um 14:33 Uhr #19044
Schade, funktioniert so leider nicht.
Das besondere an dem Button zur Wiedergabe ist, dass er auch zum stoppen der Wiedergabe dient.
Wenn ich jetzt mein Script mit einem
if the environment = "mobile" then
ergänze, dann funktioniert er nicht mehr. -
Februar 20, 2020 um 14:42 Uhr #19045
Also das hier funktioniert nicht auf dem Handy?
on mouseUp if the environment = "mobile" then if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end if end mouseUp
-
Februar 20, 2020 um 14:49 Uhr #19047
Doch auf dem Handy schon, aber nicht in der IDE
Da reagiert der Playbutton gar nicht. -
Februar 20, 2020 um 15:24 Uhr #19048
Was soll denn da bitteschön auch passieren?
Du hast doch nichts Entsprechendes geskriptet, also keinen ELSE Fall!In der IDE „sieht“ die Engine das hier in Deinem Skript:
on mouseup ## Nichts tun, wir sind ja nicht auf dem Händy, wie geil ist das denn? :-) ## Tu ma noch'n Bier! end mouseup
-
Februar 20, 2020 um 15:56 Uhr #19050
Eigentlich möchte ich ja nur, dass in der IDE das gleiche passiert, wie auf dem Handy.
Klicke ich auf den Playbutton, spielt der Hintergrundsound.
Klicke ich noch einmal auf den Playbutton dann stoppt die Hintergrundsound usw.
Das muss doch in der IDE genauso funktionieren.-
Februar 20, 2020 um 16:10 Uhr #19053
Hi,
dann muss ich dich mal fragen, wozu Du das
if environment = mobile
brauchst?Wenn die Funktionaliät in der IDE genauso sein soll wie auf dem Smartphone, brauchst Du keine Unterscheidung 😉
LG
Torsten
-
-
Februar 20, 2020 um 16:09 Uhr #19051
Wie spielst Du denn die Sound in der IDE ab?
Ach ja, hast Du ja auch schon geschrieben, mit „play ac…“,
damit kann aber leider nur EIN Sound gleichzeitig abgespielt werden.Benutze ein paar (unsichtbare) „Player“ Objekte und setze deren „filename“.
So können mehrere Sounds gleichzeitig abgespielt werden.Hinweis:
specialfolderpath(„resources“), zu dem ich Dir nun wiederholt geraten habe, funktioniert auch in der IDE! Dort liefert es den Pfad zum Ordner mit dem aktuelle Stack drin. -
Februar 20, 2020 um 16:36 Uhr #19055
seit wann funktioniert das hier:
on mouseUp if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end mouseUp
auch auf dem Desktop/in der IDE?
Bedenke, wir reden schon lange nicht mehr von dem allerersten Skript ganz oben!Gruß
Klaus
-
Februar 20, 2020 um 17:04 Uhr #19064
letzteres funktioniert nur auf dem Handy.
In der IDE kommt beim Klick auf den Playbutton folgende Fehlermeldung:
(Function: error in function handler) near „mobileSoundOnChannel“, char 11
Deshalb ja die Unterscheidung mit:
if the environment = "mobile" then
-
Februar 20, 2020 um 17:06 Uhr #19067
Ich weiß das, und Torsten weiß das eigentlich auch! 😎
Bitte lies meinen letzten Post noch einmal, anders wird es nicht gehen! -
Februar 20, 2020 um 17:07 Uhr #19069
Die Fehlermeldung kommt für diese Zeile:
if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then
-
Februar 20, 2020 um 17:13 Uhr #19070
Noch einmal, diese ganzen MOBILExxxx Befehle funktionieren nur auf dem Handy, in der IDE gibt es sofort (bein ersten Vorkommen wie hier) einen ERROR.
Ist total bescheuert, aber wir müssen damit leben, also komm bitte drüber hinweg. 😀
-
Februar 20, 2020 um 17:30 Uhr #19072
Ist mir schon klar.
ich dachte halt, mit einem zusätzlicheelse
das Problem lösen zu können.
Trotzdem danke. -
Februar 20, 2020 um 17:33 Uhr #19073
Kannst Du auch, aber dann musst Du auch das Richtige skripten für den ELSE Fall! 😎
Oder überhaupt erst einmal was. -
Februar 20, 2020 um 19:22 Uhr #19075
@Klaus: sorry für den Kommentar meinerseits, ichn hatte den ganzen Thread noch nicht gelesen.
Wenn ich das richtig verstehe, hat er doch eigentlich alles schon am Anfang richtig gemacht, um zwischen mobile und IDE zu unterscheiden:
on mouseUp pMouseButton if the environment = "mobile" then if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("engine") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType --> looping Sound wird wiederholt gespielt, bis gestoppt wird "now" Sound wird nur 1x abgespielt mobilePlaySoundOnChannel tPath, tChannelName, tType end if else play audioClip "background.wav" looping set the playloudness to the value of fld "volume" ##set the playLoudNess of player "background" to 50 end if end mouseUp
Das Schema müsste wieder eingebaut werden, oder?
LG
Torsten -
Februar 20, 2020 um 19:42 Uhr #19077
Im Prinzip hast Du recht, aber mit „play ac xyz“ wird das nichts, hier müssen PLAYER Objekte ran!
-
Februar 20, 2020 um 21:14 Uhr #19081
Stimmt: play erlaubt nur eine Audiodatei abzuspielen:
https://livecode.fandom.com/de/wiki/Play„Wenn Sie einen Audioclip abspielen, während ein anderer spielt, wird der erste Audioclip gestoppt und eine playStopped-Nachricht wird an die aktuelle Karte gesendet. Sie können nicht gleichzeitig zwei Sounds abspielen.“
-
-
Februar 20, 2020 um 21:38 Uhr #19083
SACHICHDOCH! 😀
-
Februar 21, 2020 um 19:15 Uhr #19103
Guten Abend,
ist es möglich, festzustellen, ob ein Soundkanal schon spielt?
Natürlich für Android.
Also sowas wieif the sound is done then
für IOSIch möchte gerne den Hintergrundsound über den Slider für die Lautstärke starten und zwar dann, wenn er noch nicht läuft und wenn der Wert im Field für die Lautstärkeanzeige >1 ist.
Andernfalls soll über denSlider nur die Lautstärke geregelt werden.Wie müsste also so eine if Abfrage aussehen?
Kann da jemand helfen“ -
Februar 21, 2020 um 19:36 Uhr #19104
Das müsste das hier sein:
... put mobileSoundChannelStatus("background") into sound_ist_am_spielen ## Nun musst Du checken, welchen Wert sound_ist_am_spielen hat. ...
Mögliche Werte:
stopped # Kein Sound im gewünschten Kanal
paused # Sound im Kanal, aber pausiert.
playing # Sollte klar sein -
Februar 22, 2020 um 20:29 Uhr #19133
Hallo,
ich bin gerade dabei deinen letzten Tip in den Slider für die Lautstärke zu integrieren, aber irgendwie funktioniert der Regler nicht so wie er soll.
Sobald ich den Regler berühre, startet der Hintergrundsound und laässt sich dann auch nicht mehr regeln.
hier mal der Ausschnit des Scriptes für den Slider mit Ergänzung.on mouseMove x,y if not canMove then exit mouseMove put min(Bstop,max(Tstop,y)) into yLoc set loc of me to xLoc,yLoc-cY # you may need to add values to following: xLoc and yLoc # to position the value fld where you want # Möglicherweise müssen Sie folgende Werte hinzufügen: xLoc und yLoc #, um den Wert fld an der gewünschten Stelle zu positionieren set the loc of fld "theValue_v4" to xLoc-40,yLoc-cY+10 # The following line calculates the value which you would want to # also put into use for the actual functioning of the slider # Die folgende Zeile berechnet den Wert, den Sie möchten # wird auch für die tatsächliche Funktion des Schiebereglers verwendet put round((yLoc-Tstop)*tScaleFactor)+topValue into fld "theValue_v4" put round((yLoc-Tstop)*tScaleFactor)+topValue into sBackground ##diese Zeile hinzugefügt if the environment = "mobile" then ## mobileSetSoundChannelVolume noise1, "noiseOne" ##diese Zeile hinzugefügt ## Der Channel Name in Anführungszeichen, die Variable noiseOne aber nicht! if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobileSetSoundChannelVolume "background", sBackground ##diese Zeile hinzugefügt if the value of Field "theValue_v4" >2 then mobilePlaySoundOnChannel tPath, tChannelName, tType if the value of Field "theValue_v4" <2 then mobileStopPlayingOnChannel "background" end if end if end if else set the playloudness to sBackground end if end mouseMove
-
Februar 22, 2020 um 21:10 Uhr #19134
Bedenke, „mousemove“ wird STÄNDIG gesendet, wenn die Maus sich bewegt!
Also wird hier der Sound ständig gestartet und irgendwann explodiert Dein Handy! 😀Mach das mit dem Background-Sound Check doch „on mousedown“, da sollte es besser funktionieren.
Hinweis -> the value of fld xyz
ist überflüssig, das hier reicht:
if fld „theValue_v4“ > 2 -
Februar 22, 2020 um 21:33 Uhr #19136
Bingo!
Aber der Sound stoppt noch nicht bei Level 1.
Müsste er doch aber laut dem Script oder? -
Februar 22, 2020 um 21:41 Uhr #19137
würde statt
if the value of Field "theValue_v4" <2 then
auch ein
else
reichen, oder verändert dies das gesamte Script? -
Februar 22, 2020 um 21:46 Uhr #19138
Gerade ausprobiert.
Ändert leider nichts.
Der Ton ist auf Level 1 noch immer ganz leise zu hören. -
Februar 22, 2020 um 22:14 Uhr #19139
Das alles erscheint mir igendwie viel zu kompliziert… 😀
Bitte poste mal Dein komplettes Skript mit mousedown und allem,
ich habe morgen etwas Zeit, dann schau ich mir das mal in Ruhe an.Der Ton ist auf Level 1 noch immer ganz leise zu hören.
Mit „Level 1“ meinst Du „Lautstärke auf 1 gestellt“?
-
Februar 22, 2020 um 22:29 Uhr #19142
Ja Level1 bedeutet, Lautstärke auf 1 gestellt.
-
Februar 22, 2020 um 22:30 Uhr #19143
Und hier der Script aus dem Button SliderC4:
local topValue,tScaleFactor,Bstop,Tstop,xLoc,cY,canMove, on mouseDown # Geben Sie Ihren Startwert (oben) ein put 100 into topValue # FÜGEN SIE IHREN ENDWERT (UNTEN) EIN put 1 into bottomValue # ERHALTEN SIE DEN OFFSET DES KLICKPUNKTES UND DES ZENTRUMS DES BTN # Dies verhindert, dass der BTN springt, wenn Sie mit dem Ziehen beginnen put (the mouseV - item 2 of the loc of me) into cY # Die Zahl, die am Ende der nächsten 3 Zeilen addiert oder subtrahiert wird # dient dazu, die Position des Schiebereglers so zu ändern, dass er an der gewünschten Stelle stoppt put (the bottom of image "Vsliderbar4")-(the height of me/2)+cY +7 into Bstop put (the top of image "Vsliderbar4")+(the height of me/2)+cY -27 into Tstop put item 1 of the loc of image "Vsliderbar4" +9 into xLoc put (bottomValue-topValue)/(Bstop-Tstop) into tScaleFactor put true into canMove if the environment = "mobile" then ## mobileSetSoundChannelVolume noise1, "noiseOne" ##diese Zeile hinzugefügt ## Der Channel Name in Anführungszeichen, die Variable noiseOne aber nicht! if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobileSetSoundChannelVolume "background", sBackground ##diese Zeile hinzugefügt end if if fld "theValue_v4" > 2 then mobilePlaySoundOnChannel tPath, tChannelName, tType if fld "theValue_v4" < 2 then mobileStopSoundOnChannel tPath, tChannelName, tType end if end if else set the playloudness to sBackground end if end mouseDown on mouseMove x,y if not canMove then exit mouseMove put min(Bstop,max(Tstop,y)) into yLoc set loc of me to xLoc,yLoc-cY # Möglicherweise müssen Sie folgende Werte hinzufügen: xLoc und yLoc #, um den Wert fld an der gewünschten Stelle zu positionieren set the loc of fld "theValue_v4" to xLoc-40,yLoc-cY+10 # Die folgende Zeile berechnet den Wert, den Sie möchten # wird auch für die tatsächliche Funktion des Schiebereglers verwendet put round((yLoc-Tstop)*tScaleFactor)+topValue into fld "theValue_v4" put round((yLoc-Tstop)*tScaleFactor)+topValue into sBackground ##diese Zeile hinzugefügt if the environment = "mobile" then ## Der Channel Name in Anführungszeichen, die Variable noiseOne aber nicht! mobileSetSoundChannelVolume "background", sBackground ##diese Zeile hinzugefügt else set the playloudness to sBackground end if end mouseMove on mouseUp put false into canMove end mouseUp on mouseRelease mouseUp end mouseRelease
-
Februar 23, 2020 um 16:39 Uhr #19146
OK, ein paar Fragen:
1. Das hier:
…
if (mobileSoundOnChannel(„background“) is empty) or (mobileSoundOnChannel(„background“) is „could not find channel“)
…
ist doch schon ein Grund den Sound zu starten, oder nicht?
2. Was steht in Feld „theValue_v4“ und warum? 🙂
3. Was passiert, wenn im Feld genau 2 drinsteht?
Dieser Fall wird nicht abgedeckt! -
Februar 23, 2020 um 16:48 Uhr #19148
Hallo,
Zur ersten Frage: Als einen Aufruf zum Starten des Sounds habe ich diese if-Abfrage noch gar nicht interpretiert.
Zur zweiten Frage: In „theValueV4“ steht der Lautstärkepegel (1-100) je nach Slider-Stellung.
Zur dritten Frage: Es passiert das gleiche, dass bei dem Wert 1 passiert. Gar nichts. -
Februar 23, 2020 um 17:22 Uhr #19149
Also zur ersten Frage noch folgendes:
Eigentlich wir ja nur geschaut ob es einen Channel „background“ gibt, und ob der mit einem Soundfile belegt ist und wenn nicht, dann wird er angelegt und mit einem Soundfile belegt, sowie der Wert für die Lautstärke mit angegeben.
Das Soundfile selbst wird doch erst mit dem Aufruf:mobilePlaySoundOnChannel tPath, tChannelName, tType
gestartet.
Oder interpretiere ich das falsch?Außerdem ist mir aufgefallen, dass der Sound erst startet, wenn ich ein zweites mal den Slider berühre.
Also bei einem zweiten mouseDown. -
Februar 23, 2020 um 17:51 Uhr #19150
Meiner Meinung nach, sollte so die Logik stimmen.
Bitte mal ausprobieren.on mouseDown # Geben Sie Ihren Startwert (oben) ein put 100 into topValue # FÜGEN SIE IHREN ENDWERT (UNTEN) EIN put 1 into bottomValue # ERHALTEN SIE DEN OFFSET DES KLICKPUNKTES UND DES ZENTRUMS DES BTN # Dies verhindert, dass der BTN springt, wenn Sie mit dem Ziehen beginnen put (the mouseV - item 2 of the loc of me) into cY # Die Zahl, die am Ende der nächsten 3 Zeilen addiert oder subtrahiert wird # dient dazu, die Position des Schiebereglers so zu ändern, dass er an der gewünschten Stelle stoppt put (the bottom of image "Vsliderbar4")-(the height of me/2)+cY +7 into Bstop put (the top of image "Vsliderbar4")+(the height of me/2)+cY -27 into Tstop put item 1 of the loc of image "Vsliderbar4" +9 into xLoc put (bottomValue-topValue)/(Bstop-Tstop) into tScaleFactor put true into canMove ## sBackground ist keine LOKALE Variable, daher hier noch nicht bekannt ## und es wird somit einen ERROR geben! ## Daher: put fld "theValue_v4" into tLautstärke ## Sofern ich Dich richtig verstanden habe. ## Verschachtelte IF THEN vermeiden if the environment <> "mobile" then set the playloudness to tLautstärke ## Auf dem Desktop oder in der IDE sind wir jetzt fertig! exit mousedown end if ## Initialisierung des Sounds: put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType ## Warum nicht 0 nehmen, wenn bei 1 ja noch etas zu hören ist? if fld "theValue_v4" > 0 then ## Nur starten, wenn er nicht schon läuft: if mobileSoundChannelStatus("background") <> "playing" then mobilePlaySoundOnChannel tPath, tChannelName, tType end if else mobileStopSoundOnChannel tPath, tChannelName, tType end if end mouseDown
-
Februar 23, 2020 um 18:05 Uhr #19152
So, gerade ausprobiert.
Folgendes Ergebnis:
App startet, Sound ist off
jetzt bewrühre ich den Slider und bewege ihn von 1 (kleinester Wert) aufwärts.
Ergebnis: Sound ist diesmal sofort auf On, also zu hören und lässt sich auch in der Lautstärke regeln.
Lediglich wenn ich ihn wieder herunterregle ist er auf Level 1 immer noch leise zu hören. -
Februar 23, 2020 um 18:12 Uhr #19153
Obiges gilt für das Handy.
In der IDE, funktioniert der SliderC4 jetzt gar nicht.
D.h. Ich kann ihn zwar bewegen und der Wert im Feld „theValue_v4“ änert sich aber es ist nichts zu hören. -
Februar 23, 2020 um 18:47 Uhr #19154
In Deinem Skript steht nirgendwo ein Befehl, der den Sound überhaupt in der IDE abspielt!
Weder mit „play ac xyz“ noch mit einem Player Objekt, Du setzt da nur die Lautstärke!?Oder hab ich was verpasst!
-
Februar 23, 2020 um 18:58 Uhr #19156
Stimmt.
Habe ich jetz eingefügt. -
Februar 23, 2020 um 19:02 Uhr #19157
Und?
Lass Dir doch nicht alles aus der Nase ziehen! 😀
-
Februar 23, 2020 um 19:18 Uhr #19159
Sorry, aber ich bin echt am verzweifeln.
Also folgende Änderung im Script:
von ##`Verschachtelte IF THEN vermeiden
if the environment <> „mobile“ then
set the playloudness to tLautstärke`
nach ##`Verschachtelte IF THEN vermeiden
if the environment <> „mobile“ then
play audioClip „background.wav“ ##sBackground
set the playloudness to sBackground`Ergebnis: In der IDE Ton ist nur zu hören, nachdem ich ein zweites mal auf den Slider klicke.
Move ich den Slider erneut, muss ich nochmal auf ihn klicken, damit sich die Lautstärke ändert usw.Und am Mobile ist nach klick auf den Slider, der Sound auf voller Lautstärke und lässt sich nicht regeln. ??????????
-
Februar 23, 2020 um 19:24 Uhr #19160
Bitte noch einmal Dein ganzes Skript posten!
Aber wie gesagt, mit „play ac xyz“ kannst Du nur EINEN Sound zu selben Zeit abspielen in der IDE!Und:
... if the environment <> "mobile" then play audioClip "background.wav" ##sBackground ## sBackground existiert nicht im "mousedown" Handler, bitte lies doch meine Kommentare! set the playloudness to sBackground ...
-
Februar 23, 2020 um 19:42 Uhr #19164
Die Lese ich.
Hab nur aus lauter Verzweiflung dein tLautstärke mal probehalber wieder in sBackground geändert, weil es ja im mouseMove noch so angegeben ist/war, (wurde von mir jetzt auch in tLautstärke geändert) und auch bisher bei mir immer so geheißen hat.
Und ja, ich weiß, dass ich in der IDE nur einen Sound zur selben Zeit abspielen kann.
Es spielt ja auch sonst keine zweiter Sound.Hier nun nochmal das geamte Script vom „SliderC4“
local topValue,tScaleFactor,Bstop,Tstop,xLoc,cY,canMove, on mouseDown # Geben Sie Ihren Startwert (oben) ein put 100 into topValue # FÜGEN SIE IHREN ENDWERT (UNTEN) EIN put 1 into bottomValue # ERHALTEN SIE DEN OFFSET DES KLICKPUNKTES UND DES ZENTRUMS DES BTN # Dies verhindert, dass der BTN springt, wenn Sie mit dem Ziehen beginnen put (the mouseV - item 2 of the loc of me) into cY # Die Zahl, die am Ende der nächsten 3 Zeilen addiert oder subtrahiert wird # dient dazu, die Position des Schiebereglers so zu ändern, dass er an der gewünschten Stelle stoppt put (the bottom of image "Vsliderbar4")-(the height of me/2)+cY +7 into Bstop put (the top of image "Vsliderbar4")+(the height of me/2)+cY -27 into Tstop put item 1 of the loc of image "Vsliderbar4" +9 into xLoc put (bottomValue-topValue)/(Bstop-Tstop) into tScaleFactor put true into canMove ## sBackground ist keine LOKALE Variable, daher hier noch nicht bekannt ## und es wird somit einen ERROR geben! ## Daher: put fld "theValue_v4" into tLautstärke ## Sofern ich Dich richtig verstanden habe. ## Verschachtelte IF THEN vermeiden if the environment <> "mobile" then set the playloudness to tLautstärke ## Auf dem Desktop oder in der IDE sind wir jetzt fertig! exit mousedown end if ## Initialisierung des Sounds: put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType ## Warum nicht 0 nehmen, wenn bei 1 ja noch etas zu hören ist? if fld "theValue_v4" > 0 then ## Nur starten, wenn er nicht schon läuft: if mobileSoundChannelStatus("background") <> "playing" then mobilePlaySoundOnChannel tPath, tChannelName, tType end if else mobileStopSoundOnChannel tPath, tChannelName, tType end if end mouseDown on mouseMove x,y if not canMove then exit mouseMove put min(Bstop,max(Tstop,y)) into yLoc set loc of me to xLoc,yLoc-cY # Möglicherweise müssen Sie folgende Werte hinzufügen: xLoc und yLoc #, um den Wert fld an der gewünschten Stelle zu positionieren set the loc of fld "theValue_v4" to xLoc-40,yLoc-cY+10 # Die folgende Zeile berechnet den Wert, den Sie möchten # wird auch für die tatsächliche Funktion des Schiebereglers verwendet put round((yLoc-Tstop)*tScaleFactor)+topValue into fld "theValue_v4" put "theValue_v4" into tLautstärke ##diese Zeile hinzugefügt ##if the environment = "mobile" then #### Der Channel Name in Anführungszeichen, die Variable noiseOne aber nicht! ##mobileSetSoundChannelVolume "background", sBackground ##diese Zeile hinzugefügt ##else ##put fld "theValue_v4" into tLautstärke ##set the playloudness to tLautstärke ##sBackground ##end if end mouseMove on mouseUp put false into canMove ##if fld "theValue_v4" <= 2 then ##stop playing audioClip "background.wav" ##else ####if fld "theValue_v4" >= 3 then ##play audioClip "background.wav" sBackground ##end if ####end if end mouseUp on mouseRelease mouseUp end mouseRelease
-
Februar 24, 2020 um 12:07 Uhr #19189
Hallo.
Ich habe es geschafft. (Jubel)
Der Lautstärkeregler arbeitet so wie er soll.
Liegt der Level bei 1, dann stoppt die Wiedergabe.
Liegt der Level zwischen > 0 und < 2 dann startet die Wiedergabe.Erreicht habe ich dieses Ergebnis, durch folgende Herangehensweise.
Zunächst zwei Button erstellt, einer zur Wiedergabe und einer für Stop.
In jeden dieser Button den entsprechenden on mouseUp – Befehl eingefügt und als diese beiden Button dann funktionierten, war es nur noch ein Kinderspiel. Zur Wiedergabe nutze ich den on mouseDown – Befehl und zum Stoppen den on mouseUp – Befehl.Trotzdem vielen Dank für deine Hilfe.
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.