Coding buttons to call functions
Monkey Forums/Monkey Programming/Coding buttons to call functions
| ||
I would like to make a system where I can say... (I guess it's called a callback, right?)Local tB:Button = New Button() tB.X = 10 tB.Y = 10 tB.Width = 100 tB.Height = 20 tB.Function = "SaveData()" So, this will mean, when the button is activated it will call the function SaveData(). Now, I am pretty sure this is not possible, but I am also pretty sure that some of you will have come up with a system to handle this kind of thing. So I am wondering how do you normally go about buttons? I have two ideas. Each button is an extension of a standard button class, and the Method OnActivate:Void() contains the button specific code. My concern is that this will be alot of code/work if I have a lot of buttons. My second idea is each button contains a string describing what the button will do and a global function is called to process this string
Function ProcessButtonAction:Void(action:String)
Local tAction = action.split("#")
Select tAction[0]
Case "main"
GotoMain()
Case "level"
GotoLevel(tAction[1])
End
So if the action string was set to "level#2", the resulting function call will be GotoLevel(2). My concern with this method is that I will have a lots of functions that do not sit within button code, however the upside is I will be able to use said code by actions other than button clicks. Any thoughts either way from anyone? -Chris :) |
| ||
| Been a while since I looked my own code but this mock code is how I do it. I'll be happy to post my real code when I get home later if you like.
' my button type
Type TButton
global eventid ' holds which button was activated
field xpos
field ypos
field width
field height
field label:string
function new(blah)
End
End
' Decalre my button
global button_1:TButton
' make my button
button_1 = TButton.New("button name",xpos,ypos,width,height)
' check for button events
Function Events()
Select Tbutton.Eventid
Case button_1
'do this
Case button_2
'do this
End
End function
|
| ||
| Thanks Supertino, that sounds similar to what I was considering (running a string through a select). Don't worry to much about the real code, I get the gist from what you've written there :) |
| ||
| This is probably more OOP and more flexible http://www.monkeycoder.co.nz/Community/posts.php?topic=664#5312 Monkey now support interface, so you might want to use that :) |
| ||
| Hey that's more like it :) Thank you |