Finding an item in a collection of types
Blitz3D Forums/Blitz3D Programming/Finding an item in a collection of types
| ||
| Okay here is the issue. I have 5 or 6 checkboxes for the gui i am desigining. And each is a type. Each is assigned a unique name. However, i want to be able to get the state/value of that checkbox, but simply passing its unique name into a function. The code below works. But if its called every game loop one function slows the entire game down immensely. Anyone know a better way to do this? ;========================================================== ;GET THE VALUE OF THE GIVEN CHECK BOX ;========================================================= Function GUI_GET_CHECKBOX_VAL( CHECKBOXNAMESTR$ ) For TARGET_CHECK.GUI_CHECKBOX_TYPE=Each GUI_CHECKBOX_TYPE If TARGET_CHECK\NAME$ = CHECKBOXNAMESTR$ Then Return TARGET_CHECK\Value End If Next End Function |
| ||
| well you could use handles... like have instead of a name the function would return a handle then you could just do TargetCheck.Gui = Object.Target(handle) return TargetCheck\Value |
| ||
| 5 or 6 types shouldn't slow it down that much! should it? |
| ||
| DrakeX , well, i think it super slow because i was using the function inefficiently in sub loop (dumb mistake). but now i am interested in finding a better way of doing this since it has peaked my interest. SSS, Is this an undocumented method or is it standard practice? |
| ||
Why not check against the gadget handle instead of the name? Just like images, sounds and meshes, gadgets have a handle number.
Type checkbox
Field hnd
End Type
For i=1 to 5
chk.checkbox = new checkbox
chk\hnd = CreateButton(.......)
Next
Function FindChecked.checkbox()
; This function returns a chk type reference so you can use it like...
; chk.checkbox = FindChecked()
For chk.checkbox = each checkbox
If ButtonState(chk\hnd) = 1
Return chk
End If
Next
End Function
|
| ||
| The speed of the comparision isnt any faster. The function still needs to iterate through the loop. I was hoping for something a bit more in the flavor of a native function. i might use SSS's method dealing with the handles is a good idea, but i need more of a human interface. By this i mean a method that a developer can use tofind a checkbox by using the name, since the developer is not going to know the handle id right off the bat. Thanks for the help though. Very much appreciated |
| ||
well the developer could know the handle right off the bat if you did something like this
type Button
field x,y
....
end type
function CreateButton(...)
b.Button = new Button
;set the parameters
return Handle(b)
end function
function FindButton.Button(hButton)
b.Button = Object.Button(hButton)
return b
end function
|
| ||
| ahh.. there we go... thanks SSS. |