class FlxTypedGroup<T>
package flixel.group
extends FlxBasic
import flixel.group.FlxGroup
extended by FlxTypedEmitter, FlxState
This is an organizational class that can update and render a bunch of FlxBasic
s.
NOTE: Although FlxGroup
extends FlxBasic
, it will not automatically
add itself to the global collisions quad tree, it will only add its members.
Constructor
Variables
read onlylength:Int = 0
The number of entries in the members array. For performance and safety you should check this
variable instead of members.length
unless you really know what you're doing!
maxSize:Int
The maximum capacity of this group. Default is 0
, meaning no max capacity, and the group can just grow.
read onlymemberAdded:FlxTypedSignal<T ‑> Void>
A FlxSignal
that dispatches when a child is added to this group.
4.4.0
.read onlymemberRemoved:FlxTypedSignal<T ‑> Void>
A FlxSignal
that dispatches when a child is removed from this group.
4.4.0
.Methods
add(Object:T):T
Adds a new FlxBasic
subclass (FlxBasic
, FlxSprite
, Enemy
, etc) to the group.
FlxGroup
will try to replace a null
member of the array first.
Failing that, FlxGroup
will add it to the end of the member array.
WARNING: If the group has a maxSize
that has already been met,
the object will NOT be added to the group!
Parameters:
Object | The object you want to add to the group. |
---|
Returns:
The same FlxBasic
object that was passed in.
clear():Void
Remove all instances of FlxBasic
subclasses (FlxSprite
, FlxTileblock
, etc) from the list.
WARNING: does not destroy()
or kill()
any of these objects!
countDead():Int
Call this function to find out how many members of the group are dead.
Returns:
The number of FlxBasic
s flagged as dead. Returns -1
if group is empty.
countLiving():Int
Call this function to find out how many members of the group are not dead.
Returns:
The number of FlxBasic
s flagged as not dead. Returns -1
if group is empty.
destroy():Void
WARNING: A destroyed FlxBasic
can't be used anymore.
It may even cause crashes if it is still part of a group or state.
You may want to use kill()
instead if you want to disable the object temporarily only and revive()
it later.
This function is usually not called manually (Flixel calls it automatically during state switches for all add()
ed objects).
Override this function to null
out variables manually or call destroy()
on class members if necessary.
Don't forget to call super.destroy()
!
forEach(Function:T ‑> Void, Recurse:Bool = false):Void
Applies a function to all members.
Parameters:
Function | A function that modifies one element at a time. |
---|---|
Recurse | Whether or not to apply the function to members of subgroups as well. |
forEachAlive(Function:T ‑> Void, Recurse:Bool = false):Void
Applies a function to all alive
members.
Parameters:
Function | A function that modifies one element at a time. |
---|---|
Recurse | Whether or not to apply the function to members of subgroups as well. |
forEachDead(Function:T ‑> Void, Recurse:Bool = false):Void
Applies a function to all dead members.
Parameters:
Function | A function that modifies one element at a time. |
---|---|
Recurse | Whether or not to apply the function to members of subgroups as well. |
forEachExists(Function:T ‑> Void, Recurse:Bool = false):Void
Applies a function to all existing members.
Parameters:
Function | A function that modifies one element at a time. |
---|---|
Recurse | Whether or not to apply the function to members of subgroups as well. |
forEachOfType<K>(ObjectClass:Class<K>, Function:K ‑> Void, Recurse:Bool = false):Void
getFirstAlive():T
getFirstAvailable(?ObjectClass:Class<T>, Force:Bool = false):T
Call this function to retrieve the first object with exists == false
in the group.
This is handy for recycling in general, e.g. respawning enemies.
Parameters:
ObjectClass | An optional parameter that lets you narrow the results to instances of this particular class. |
---|---|
Force | Force the object to be an |
Returns:
A FlxBasic
currently flagged as not existing.
getFirstDead():T
getFirstExisting():T
getFirstNull():Int
Call this function to retrieve the first index set to null
.
Returns -1
if no index stores a null
object.
Returns:
An Int
indicating the first null
slot in the group.
getRandom(StartIndex:Int = 0, Length:Int = 0):T
Returns a member at random from the group.
Parameters:
StartIndex | Optional offset off the front of the array.
Default value is |
---|---|
Length | Optional restriction on the number of values you want to randomly select from. |
Returns:
A FlxBasic
from the members
list.
insert(position:Int, object:T):T
Inserts a new FlxBasic
subclass (FlxBasic
, FlxSprite
, Enemy
, etc)
into the group at the specified position.
FlxGroup
will try to replace a null
member at the specified position of the array first.
Failing that, FlxGroup
will insert it at the position of the member array.
WARNING: If the group has a maxSize
that has already been met,
the object will NOT be inserted to the group!
Parameters:
Position | The position in the group where you want to insert the object. |
---|---|
Object | The object you want to insert into the group. |
Returns:
The same FlxBasic
object that was passed in.
kill():Void
Calls kill()
on the group's members
and then on the group itself.
You can revive this group later via revive()
after this.
recycle(?ObjectClass:Class<T>, ?ObjectFactory:() ‑> T, Force:Bool = false, Revive:Bool = true):T
Recycling is designed to help you reuse game objects without always re-allocating or "newing" them.
It behaves differently depending on whether maxSize
equals 0
or is bigger than 0
.
maxSize > 0
/ "rotating-recycling" (used by FlxEmitter
):
- at capacity: returns the next object in line, no matter its properties like alive
, exists
etc.
- otherwise: returns a new object.
maxSize == 0
/ "grow-style-recycling"
- tries to find the first object with exists == false
- otherwise: adds a new object to the members
array
WARNING: If this function needs to create a new object, and no object class was provided,
it will return null
instead of a valid object!
Parameters:
ObjectClass | The class type you want to recycle (e.g. |
---|---|
ObjectFactory | Optional factory function to create a new object
if there aren't any dead members to recycle.
If |
Force | Force the object to be an |
Revive | Whether recycled members should automatically be revived
(by calling |
Returns:
A reference to the object that was created.
remove(Object:T, Splice:Bool = false):T
Removes an object from the group.
Parameters:
Object | The |
---|---|
Splice | Whether the object should be cut from the array entirely or not. |
Returns:
The removed object.
replace(OldObject:T, NewObject:T):T
Replaces an existing FlxBasic
with a new one.
Does not do anything and returns null
if the old object is not part of the group.
Parameters:
OldObject | The object you want to replace. |
---|---|
NewObject | The new object you want to use instead. |
Returns:
The new object.
inlinesort(Function:(Int, T, T) ‑> Int, Order:Int = FlxSort.ASCENDING):Void
Call this function to sort the group according to a particular value and order.
For example, to sort game objects for Zelda-style overlaps you might call
group.sort(FlxSort.byY, FlxSort.ASCENDING)
at the bottom of your FlxState#update()
override.
Parameters:
Function | The sorting function to use - you can use one of the premade ones in
|
---|---|
Order | A constant that defines the sort order.
Possible values are |