Adventures in broadcaster: attachToComponentMouseEvents
-
@Christoph-Hart said in Adventures in broadcaster: attachToComponentMouseEvents:
@Lindon yeah that‘s precisely what attachToComplexData is for. I‘ll make a example soon.
lovely...
-
Alright here it is:
const var FileLoadBroadcaster = Engine.createBroadcaster({ "id": "File Watcher", "colour": -1, "args": ["processorId", "fileIndex", "value"] }); FileLoadBroadcaster.attachToComplexData("AudioFile.Content", // event type "Audio Loop Player1", // processor id 0, // index of slot "Loop Player Source"); // metadata /** This function will return the text value for the property so we just need to do some prettifying here. */ inline function getTextValue(indexInList, // the index of the component (here -1 because no array) processorId, // the arguments of the broadcaster fileIndex, value) { if(value.indexOf("{PROJECT_FOLDER}") != -1) { return value.replace("{PROJECT_FOLDER}", ""); } if(value.length > 0) { local f = FileSystem.fromAbsolutePath(value); return f.toString(1); } return "Empty"; }; FileLoadBroadcaster.addComponentPropertyListener("Label1", // target component (single or array) "text", // target property "Update Text Label", // metadata getTextValue); // conversion function
(You obviously need a Label called
Label1
and a Loop player calledAudio Loop Player1
for it to work).I've also used the component property listener that automatically sets the properties of components. The advantage of this approach is that you can actually see what's going on in the broadcaster map.
-
@Christoph-Hart great - very interesting....thanks.
-
@Christoph-Hart -- Okay this works fine , but I dont (yet) understand how I can have a "simple" function call on the drop...instead of using addComponentPropertyListener
or how I extend this example to allow me to have Audio Loop Player 1, with its associated label1 and Audio Loop Player 2 with its associated label 2
-
how I extend this example to allow me to have Audio Loop Player 1, with its associated label1 and Audio Loop Player 2 with its associated label 2
Pass in an array of loop players to the source and an array of component IDs as the target and then use
indexInList
to figure out which value to return.If you don't fancy the
addComponentPropertyListener()
method, you can just use the plain "old"addListener(object, metadata, function)
call. -
@Lindon Mate, did you figure this out?
Just tried the code by Christoph, and Cant understand how to add another set of Loop player here!@Lindon said in Adventures in broadcaster: attachToComponentMouseEvents:
@Christoph-Hart -- Okay this works fine , but I dont (yet) understand how I can have a "simple" function call on the drop...instead of using addComponentPropertyListener
or how I extend this example to allow me to have Audio Loop Player 1, with its associated label1 and Audio Loop Player 2 with its associated label 2
-
@Natan said in Adventures in broadcaster: attachToComponentMouseEvents:
@Lindon Mate, did you figure this out?
Just tried the code by Christoph, and Cant understand how to add another set of Loop player here!@Lindon said in Adventures in broadcaster: attachToComponentMouseEvents:
@Christoph-Hart -- Okay this works fine , but I dont (yet) understand how I can have a "simple" function call on the drop...instead of using addComponentPropertyListener
or how I extend this example to allow me to have Audio Loop Player 1, with its associated label1 and Audio Loop Player 2 with its associated label 2
Im afraid I cant give you any clearer description of what to do than @Christoph-Hart's post above...
-
Hey folks, I'm trying to remove the .wav extension too, any help?
Below only removes the Project folder Path
if(value.indexOf("{PROJECT_FOLDER}") != -1) { return value.replace("{PROJECT_FOLDER}", ""); }
-
@Natan said in Adventures in broadcaster: attachToComponentMouseEvents:
if(value.indexOf("{PROJECT_FOLDER}") != -1)
{
return value.replace("{PROJECT_FOLDER}", "");
}try:
if(value.indexOf("{PROJECT_FOLDER}") != -1) { return value.replace(".wav", ""); }
-
@Lindon said in Adventures in broadcaster: attachToComponentMouseEvents:
if(value.indexOf("{PROJECT_FOLDER}") != -1)
{
return value.replace(".wav", "");
}Hey Lindon, Thanks mate, This does the Job, But need to Remove the Project Path aswell
Also We need to Add a couple of Extension Like
.Wav .Flac .Mp3
so the Label stand cleanerAny Idea?
-
reg tempValue; if(value.indexOf("{PROJECT_FOLDER}") != -1) { tempValue = value.replace(".wav", ""); Console.print(tempValue); //<-- now think what you might do to this? }
Perhaps also read up about substring:
W3Schools.com
Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more.
(www.w3schools.com)
-
@Lindon Thanks, man, Just need to Remove the
{PROJECT_FOLDER}
as well!if(value.indexOf("{PROJECT_FOLDER}") != -1) // This does not Work !!! { return value.replace("{PROJECT_FOLDER}", ""); } reg tempValue; if(value.indexOf("{PROJECT_FOLDER}") != -1) { tempValue = value.replace(".wav", ""); Console.print(tempValue); //<-- now think what you might do to this? return tempValue; }
-
@Natan said in Adventures in broadcaster: attachToComponentMouseEvents:
@Lindon Thanks, man, Just need to Remove the
{PROJECT_FOLDER}
as well!if(value.indexOf("{PROJECT_FOLDER}") != -1) // This does not Work !!! { return value.replace("{PROJECT_FOLDER}", ""); } reg tempValue; if(value.indexOf("{PROJECT_FOLDER}") != -1) { tempValue = value.replace(".wav", ""); Console.print(tempValue); //<-- now think what you might do to this? return tempValue; }
nearly...
if(value.indexOf("{PROJECT_FOLDER}") != -1) { tempValue = value.replace(".wav", ""); tempValue = tempValue.replace("{PROJECT_FOLDER}",""); return tempValue; }
There is a better way tho...go read up about substring
W3Schools.com
Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more.
(www.w3schools.com)
-
@Lindon said in Adventures in broadcaster: attachToComponentMouseEvents:
reg tempValue;
Brilliant, Thanks a Lot mate, You're the BEST <3
Cheers :folded_hands: -
@Natan read up about substring...