This is a codesnippet where I show how to use the functions in a type for e.g. a button (not very hard but it could be a help for beginners) :)
// --------------------------------- //
// Project: button_test
// Start: Wednesday, August 04, 2010
// IDE Version: 8.050
//This is a codesnippet for a button with functions within the type declaration
SYSTEMPOINTER TRUE
LIMITFPS -1
TYPE tObject
w%//width
h%//heigth
x%//coord-x
y%//coord-y
mh%//mousehover
md%//mousedown
mousefree%//if the mousebutton is free it´s true
FUNCTION init: w%,h%,x%,y%//Set the values of the object
self.w=w
self.h=h
self.x=x
self.y=y
ENDFUNCTION
FUNCTION check_mouse:mx,my//Check if the mouse is over the button
IF mx>self.x AND mx<self.x+self.w AND my>self.y AND my<self.y+self.h
self.mh=TRUE
ELSE
self.mh=FALSE
ENDIF
ENDFUNCTION
FUNCTION check_mouseDown:mx,my,b1//check if the button is clicked and change a value
check_mouse(mx,my)
IF self.mh//if the mouse is over the button
IF b1//if the mousebutton is pressed
IF self.mousefree//if the mousebutton is free
SELECT self.md
CASE TRUE
self.md=FALSE
CASE FALSE
self.md=TRUE
ENDSELECT
self.mousefree=FALSE
ENDIF
ELSE
self.mousefree=TRUE
ENDIF
ENDIF
ENDFUNCTION
ENDTYPE
GLOBAL button AS tObject//create a new button
button.init(100,50,0,0)//initialize the button values
WHILE TRUE//MAIN LOOP
IF button.md THEN DRAWRECT 100,100,100,100,RGB(0,255,0)//If the button is clicked
LOCAL mx,my,b1,b2//local mousestates
MOUSESTATE mx,my,b1,b2
button.check_mouseDown(mx,my,b1)//check if the mousebutton is pressed / clicked
SHOWSCREEN
WEND//END OF MAIN LOOP
END
this sample might be a little bit confusing. You'll have to click in the area 0, 0, 100, 50 (button.init) on the screen and the button is shown at another place ?!?
Guess if you change the call for button.init to
button.init(100,100,100,100)//initialize the button values
it will work as expected.
Secondly the button isn't shown at first. You'll have to find it in the dark :)
so if you change
IF button.md THEN DRAWRECT 100,100,100,100,RGB(0,255,0)//If the button is clicked
to
IF button.md
DRAWRECT 100,100,100,100,RGB(0,255,0)//If the button is clicked
ELSE
DRAWRECT 100,100,100,100,RGB(255,0,0)
ENDIF
it's shown in every case and changes the color by clicking on it
Haha, yes you´re right :)
That´s the problem... You know what you do if you write a program and you think another people understand that.
Thanks for the reply ;)
very helpful to me as I wasn't aware we could use functions inside a udt. Makes GLB a little less BASIC and a little more OO.
Yeah, makes the source a lot more readable.