Types confuse me in MAX

BlitzMax Forums/BlitzMax Beginners Area/Types confuse me in MAX

FBEpyon(Posted 2005) [#1]
Can someone tell me why I get Identifyer "udate" not found in this??


Global g_radio = LoadAnimImage("gfx\gui\radio.bmp",8,8,0,2,MASKEDIMAGE) 'Graphics for the radio.


Type radio

	Const s_radio = 1 'Tells the state field that the radio is selected
	Const u_radio = 0 'Tells the stste field that the radio is unselected
	Global rlst:TList 'List (sure you knew that)
	Global t_radio 'This counts the total # of radios being used.

	Field id 'This is the ID or # of the return in the function
	Field state 'Current state of the button
	Field x,y 'x,y location of the radio button
	
	Function Create(x,y) 'Create function making the button.
		If rlst = Null Then rlst = CreateList()
		r:radio = New radio
		ListAddLast(rlst,r)
		id = t_radio + 1
		state = u_radio
		x = x
		y = y
		Return id	
	End Function
	
	Method Update() 'Method for drawing the radio button
		DrawImage g_radio,x,y,state
	End Method
	
End Type

Function CreateGUI()
	radio.Create(x,y)
End Function

r.update()




DH(Posted 2005) [#2]
Simply put, there is no definition for r globally

Here (since I wasn't exactly sure what all the field were for and what not, I optimized it a bit based on your general code):
Global R:Radio
Type Radio
	Const S_Radio:int=1
	Const U_Radio:int=0
	
	Global RLST:TList
	Global T_Radio:int
	Global G_Radio:TImage
	
	Field ID:Int
	Field State:Int
	Field X:int,Y:Int
	
	Method Update()
	     If G_Radio <> null then DrawImage(g_radio,x,y,state)
	End Method

	Function Create:Radio(X1:int,Y1:int)
        	Local R:Radio
		if RLST = null then RLST = createlist()
		R = New Radio
		State = U_Radio
		ID = T_Radio+1
		X=X1
		Y=Y1
		Return R
	End Function
End Type

Function CreateGUI()
	R = Radio.Create(5,5)
End Function

R.Update()



FBEpyon(Posted 2005) [#3]
Im not sure what you have above now, but I added comments to the code in the top of this post


DH(Posted 2005) [#4]
Alright, well here is why update returns an error.

The object 'r' in your "r.Update()" isn't defined anywhere. Sure you have r:radio in the function create which is assosiated with the type radio (mind you, since you haven't defined R as global to the program, this is merely local to the function create of the type radio), however 'r' from 'r.update()' hasn't been defined as a radio object (globally).

AT the top of your code (Very top), put in this
"Global R:Radio"

See if that helps.


FBEpyon(Posted 2005) [#5]
yep that fixed it thanks


FBEpyon(Posted 2005) [#6]
Sorry I figured it out...