Find Object of a Type
Blitz3D Forums/Blitz3D Programming/Find Object of a Type
| ||
I'm using the following sourcecode to find an object in an type and update it.Function UpdateSprite(CurrentSprite,x,y) For Sprite.Sprite = Each Sprite If Sprite\Sprite=CurrentSprite Then Exit Next Sprite\x = x Sprite\y = y End Function In source from other people I found a function called Object, it looks something like that: Sprite\Sprite = Object.Sprite(something); but I didn't find anything in Blitz3D-Helpfile, so I just wondering how this command works. |
| ||
Do a search for Handle and Object on the forums - plenty of code there to demonstrate it uses. Alot of folk store the Handle of the type instance in the Entities Name - not sure if you can do this with sprites. Anyhoo, you may want to consider using an array of types for this purpose. Global sprites = 100 Type sprite_type field sprite field x, y end type dim sprite. sprite_type ( sprites-1 ) Then to construct the type instance use something like this .. for l = 0 to sprites-1 sprite ( l ) = new sprite_type sprite ( l )\x = whatever sprite ( l )\y = whatever next Then you can directly access the type instance with this .. update_sprite ( sprite( current_sprite ) , 5, 6 ) Function update_sprite ( check.sprite_type, x, y ) check\x = x check\y = y End Function This should probably work quite well for you although I'd recommend recyling the type instances rather than deleting and creating new ones when required. Stevie. |
| ||
Basically, the unofficial command 'Handle()' accepts a Type pointer as a parameter and spits out an integer number which is a reference to the Type element stored in the Type pointer. The unofficial command 'Object.whatever_type()' accepts an integer value (which should be a value output by the 'Handle()' command) and spits out a Type pointer value. The 'Object' keyword should be followed by a dot and then by the name of the Type being output. This allows you to use Types in a polymorphic fashion. Example: Type my_type Field whatever End Type Global this_is_my_type.my_type = New my_type Global this_is_my_other_type.my_type integer_variable = Handle( this_is_my_type.my_type ) this_is_my_other_type.my_type = Object.my_type( integer_variable ) |