Hello,
What is the best way to switch between 2 images when a(ny) button is pressed. Assuming the original png image “wifi3.png” is already on the widget, I want to cabbageSet “wifi”, “file(“wifi1.png”)” when kToggle == 1 or whatever button is pressed
aOutL = aOutL * (kToggle == 1 ? kGating : 1)
aOutR = aOutR * (kToggle == 1 ? kGating : 1)
Thank you
Wen
You can try toggling the visibility between two images when you meet a certain condition.
kUpdateOnMetronome metro 10 ; or however many Hz you want
if kToggle == 1 && kUpdateOnMetronome == 1 then
cabbageSet 1, "image_of_wifi3", "visible", 1
cabbageSet 1, "image_of_wifi1", "visible", 0
elseif kUpdateOnMetronome == 1 then
cabbageSet 1, "image_of_wifi3", "visible", 0
cabbageSet 1, "image_of_wifi1", "visible", 1
endif
Try to keep cabbageSet behind an if-statement or something that is not triggered at every step of the instrument, because the opcode will lower performance and eat resources. That is why I added kUpdateOnMetronome, so that you can define how fast you want the images to update.
EDIT: my bad, I thought you wanted a constant change, like a light indicator. Go ahead and check out the cabbageSet opcode provided in Cabbage.
I ought to leave a better answer. You can handle functionality on a button press if the value of its channel changes. Like so:
; get button channel
kWifi cabbageGetValue "btnWifi"
; update image on button press - check if value of channel changes
if changed(kWifi) == 1 then
; check if button is on
if kWifi == 1 then
cabbageSet 1, "image_of_wifi3", "visible", 1
cabbageSet 1, "image_of_wifi1", "visible", 0
else ; button is off
cabbageSet 1, "image_of_wifi3", "visible", 0
cabbageSet 1, "image_of_wifi1", "visible", 1
endif
endif
This way cabbageSet won’t murder your runtime. You can further improve this by multiplying the value of 1 or 0 you pass for “visible” by kWifi so you don’t need another if-else check.
if changed(kWifi) == 1 then
cabbageSet 1, "image_of_wifi3", "visible", 1 * kWifi
cabbageSet 1, "image_of_wifi1", "visible", 1 - 1 * kWifi
endif
In hindsight, this can also work if you make kWifi a sort of “light indicator” for if your effect is functioning or not (bad Wi-Fi signal-gate triggered).
2 Likes