Packagefeathers.layout
Classpublic class FlowLayout
InheritanceFlowLayout Inheritance BaseVariableVirtualLayout Inheritance starling.events.EventDispatcher
Implements IVariableVirtualLayout, IDragDropLayout

Product Version : Feathers 2.2.0

Positions items of different dimensions from left to right in multiple rows. When the width of a row reaches the width of the container, a new row will be started. Constrained to the suggested width, the flow layout will change in height as the number of items increases or decreases.

See also

How to use FlowLayout with Feathers containers


Public Properties
 PropertyDefined By
  firstHorizontalGap : Number
The space, in pixels, between the first and second items.
FlowLayout
  gap : Number
Quickly sets both horizontalGap and verticalGap to the same value.
FlowLayout
 InheritedhasVariableItemDimensions : Boolean
When the layout is virtualized, and this value is true, the items may have variable dimensions.
BaseVariableVirtualLayout
  horizontalAlign : String
If the total row width is less than the bounds, the items in the row can be aligned horizontally.
FlowLayout
  horizontalGap : Number
The horizontal space, in pixels, between items.
FlowLayout
  lastHorizontalGap : Number
The space, in pixels, between the last and second to last items.
FlowLayout
  padding : Number
Quickly sets all padding properties to the same value.
FlowLayout
  paddingBottom : Number
The space, in pixels, below the items.
FlowLayout
  paddingLeft : Number
The space, in pixels, to the left of the items.
FlowLayout
  paddingRight : Number
The space, in pixels, to the right of the items.
FlowLayout
  paddingTop : Number
The space, in pixels, above of items.
FlowLayout
 InheritedrequiresLayoutOnScroll : Boolean
[read-only] Determines if the container calls layout() when the scroll position changes.
BaseVariableVirtualLayout
  rowVerticalAlign : String
If the height of an item is less than the height of a row, it can be aligned vertically.
FlowLayout
 InheritedtypicalItem : DisplayObject
Used internally by a component that supports layout virtualization, such as List, to provide a display object with dimensions that represent a "typical" item in the layout.
BaseVariableVirtualLayout
 InheriteduseVirtualLayout : Boolean
Determines if virtual layout should be used.
BaseVariableVirtualLayout
  verticalAlign : String
If the total height of the content is less than the bounds, the content may be aligned vertically.
FlowLayout
  verticalGap : Number
The vertical space, in pixels, between items.
FlowLayout
Public Methods
 MethodDefined By
  
Constructor.
FlowLayout
  
addToVariableVirtualCacheAtIndex(index:int, item:DisplayObject = null):void
[override] Inserts an item in to the cache at the specified index, pushing the old cached value at that index, and all following values, up one index.
FlowLayout
  
calculateNavigationDestination(items:Vector.<DisplayObject>, index:int, keyCode:uint, bounds:LayoutBoundsResult):int
Using the current index and a key press, calculates the new index.
FlowLayout
  
getDropIndex(x:Number, y:Number, items:Vector.<DisplayObject>, boundsX:Number, boundsY:Number, width:Number, height:Number):int
Returns the index of the item if it were dropped at the specified location.
FlowLayout
  
getNearestScrollPositionForIndex(index:int, scrollX:Number, scrollY:Number, items:Vector.<DisplayObject>, x:Number, y:Number, width:Number, height:Number, result:Point = null):Point
Calculates the scroll position nearest to the current scroll position that will display the full bounds of the item within the view port.
FlowLayout
  
getScrollPositionForIndex(index:int, items:Vector.<DisplayObject>, x:Number, y:Number, width:Number, height:Number, result:Point = null):Point
Using the item dimensions, calculates a scroll position that will ensure that the item at a given index will be visible within the specified bounds.
FlowLayout
  
getVisibleIndicesAtScrollPosition(scrollX:Number, scrollY:Number, width:Number, height:Number, itemCount:int, result:Vector.<int> = null):Vector.<int>
Used internally by a component, such as List, to determines which indices are visible with the specified view port bounds and scroll position.
FlowLayout
  
layout(items:Vector.<DisplayObject>, viewPortBounds:ViewPortBounds = null, result:LayoutBoundsResult = null):LayoutBoundsResult
Positions (and possibly resizes) the supplied items within the optional bounds argument.
FlowLayout
  
measureViewPort(itemCount:int, viewPortBounds:ViewPortBounds = null, result:Point = null):Point
Used internally by a component, such as List, to measure the view port based on the typical item dimensions or cached dimensions, if available.
FlowLayout
  
positionDropIndicator(dropIndicator:DisplayObject, index:int, x:Number, y:Number, items:Vector.<DisplayObject>, width:Number, height:Number):void
Positions the drop indicator in the layout.
FlowLayout
  
[override] Removes an item in to the cache at the specified index, moving the values at following indexes down by one.
FlowLayout
  
[override] Clears the cached dimensions for all virtualized indices.
FlowLayout
  
resetVariableVirtualCacheAtIndex(index:int, item:DisplayObject = null):void
[override] Clears the cached dimensions for one specific virtualized index.
FlowLayout
Events
 Event Summary Defined By
  Dispatched when a property of the layout changes, indicating that a redraw is probably needed.FlowLayout
 InheritedDispatched when the layout would like to adjust the container's scroll position.BaseVariableVirtualLayout
Property Detail
firstHorizontalGapproperty
firstHorizontalGap:Number

The space, in pixels, between the first and second items. If the value of firstHorizontalGap is NaN, the value of the horizontalGap property will be used instead.

The default value is NaN.


Implementation
    public function get firstHorizontalGap():Number
    public function set firstHorizontalGap(value:Number):void

See also

gapproperty 
gap:Number

Quickly sets both horizontalGap and verticalGap to the same value. The gap getter always returns the value of horizontalGap, but the value of verticalGap may be different.

The default value is 0.


Implementation
    public function get gap():Number
    public function set gap(value:Number):void

See also

horizontalAlignproperty 
horizontalAlign:String

If the total row width is less than the bounds, the items in the row can be aligned horizontally.

Note: The HorizontalAlign.JUSTIFY constant is not supported.

The default value is feathers.layout.HorizontalAlign.LEFT.


Implementation
    public function get horizontalAlign():String
    public function set horizontalAlign(value:String):void

See also

horizontalGapproperty 
horizontalGap:Number

The horizontal space, in pixels, between items.

The default value is 0.


Implementation
    public function get horizontalGap():Number
    public function set horizontalGap(value:Number):void
lastHorizontalGapproperty 
lastHorizontalGap:Number

The space, in pixels, between the last and second to last items. If the value of lastHorizontalGap is NaN, the value of the horizontalGap property will be used instead.

The default value is NaN.


Implementation
    public function get lastHorizontalGap():Number
    public function set lastHorizontalGap(value:Number):void

See also

paddingproperty 
padding:Number

Quickly sets all padding properties to the same value. The padding getter always returns the value of paddingTop, but the other padding values may be different.

The default value is 0.


Implementation
    public function get padding():Number
    public function set padding(value:Number):void

See also

paddingBottomproperty 
paddingBottom:Number

The space, in pixels, below the items.

The default value is 0.


Implementation
    public function get paddingBottom():Number
    public function set paddingBottom(value:Number):void
paddingLeftproperty 
paddingLeft:Number

The space, in pixels, to the left of the items.

The default value is 0.


Implementation
    public function get paddingLeft():Number
    public function set paddingLeft(value:Number):void
paddingRightproperty 
paddingRight:Number

The space, in pixels, to the right of the items.

The default value is 0.


Implementation
    public function get paddingRight():Number
    public function set paddingRight(value:Number):void
paddingTopproperty 
paddingTop:Number

The space, in pixels, above of items.

The default value is 0.


Implementation
    public function get paddingTop():Number
    public function set paddingTop(value:Number):void
rowVerticalAlignproperty 
rowVerticalAlign:String

If the height of an item is less than the height of a row, it can be aligned vertically.

The default value is feathers.layout.VerticalAlign.TOP.


Implementation
    public function get rowVerticalAlign():String
    public function set rowVerticalAlign(value:String):void

See also

verticalAlignproperty 
verticalAlign:String

If the total height of the content is less than the bounds, the content may be aligned vertically.

Note: The VerticalAlign.JUSTIFY constant is not supported.

The default value is feathers.layout.VerticalAlign.TOP.


Implementation
    public function get verticalAlign():String
    public function set verticalAlign(value:String):void

See also

verticalGapproperty 
verticalGap:Number

The vertical space, in pixels, between items.

The default value is 0.


Implementation
    public function get verticalGap():Number
    public function set verticalGap(value:Number):void
Constructor Detail
FlowLayout()Constructor
public function FlowLayout()

Constructor.

Method Detail
addToVariableVirtualCacheAtIndex()method
override public function addToVariableVirtualCacheAtIndex(index:int, item:DisplayObject = null):void

Inserts an item in to the cache at the specified index, pushing the old cached value at that index, and all following values, up one index.

Parameters

index:int
 
item:DisplayObject (default = null)

calculateNavigationDestination()method 
public function calculateNavigationDestination(items:Vector.<DisplayObject>, index:int, keyCode:uint, bounds:LayoutBoundsResult):int

Using the current index and a key press, calculates the new index. This might be use to change a list's selectedIndex when a key is pressed.

Parameters

items:Vector.<DisplayObject>
 
index:int
 
keyCode:uint
 
bounds:LayoutBoundsResult

Returns
int
getDropIndex()method 
public function getDropIndex(x:Number, y:Number, items:Vector.<DisplayObject>, boundsX:Number, boundsY:Number, width:Number, height:Number):int

Returns the index of the item if it were dropped at the specified location.

Parameters

x:Number
 
y:Number
 
items:Vector.<DisplayObject>
 
boundsX:Number
 
boundsY:Number
 
width:Number
 
height:Number

Returns
int
getNearestScrollPositionForIndex()method 
public function getNearestScrollPositionForIndex(index:int, scrollX:Number, scrollY:Number, items:Vector.<DisplayObject>, x:Number, y:Number, width:Number, height:Number, result:Point = null):Point

Calculates the scroll position nearest to the current scroll position that will display the full bounds of the item within the view port. If the item is already fully displayed in the view port, the current scroll position will be returned unchanged.

While the item will be displayed in the view port without being clipped in any way, it may not be placed in the most prominent position possible. To give the item a more prominent location, use getScrollPositionForIndex() instead.

This function should always be called after the layout() function. The width and height arguments are the final bounds of the view port, which may be calculated in the layout() function.

Parameters

index:int
 
scrollX:Number
 
scrollY:Number
 
items:Vector.<DisplayObject>
 
x:Number
 
y:Number
 
width:Number
 
height:Number
 
result:Point (default = null)

Returns
Point
getScrollPositionForIndex()method 
public function getScrollPositionForIndex(index:int, items:Vector.<DisplayObject>, x:Number, y:Number, width:Number, height:Number, result:Point = null):Point

Using the item dimensions, calculates a scroll position that will ensure that the item at a given index will be visible within the specified bounds.

Typically, this function is used to show the item in the most prominent way, such as centering. To scroll a minimum distance required to display the full bounds of the item in the view port, use getNearestScrollPositionForIndex() instead.

This function should always be called after the layout() function. The width and height arguments are the final bounds of the view port, which may be calculated in the layout() function.

Parameters

index:int
 
items:Vector.<DisplayObject>
 
x:Number
 
y:Number
 
width:Number
 
height:Number
 
result:Point (default = null)

Returns
Point
getVisibleIndicesAtScrollPosition()method 
public function getVisibleIndicesAtScrollPosition(scrollX:Number, scrollY:Number, width:Number, height:Number, itemCount:int, result:Vector.<int> = null):Vector.<int>

Used internally by a component, such as List, to determines which indices are visible with the specified view port bounds and scroll position. Indices that aren't returned are typically not displayed and can be replaced virtually. Uses the typical items dimensions, or cached dimensions, if available.

This function is meant to be called by the List or other component that uses the virtual layout. If you're simply creating a layout for a List or another component, do not call this function. It is meant for developers creating custom components only.

Parameters

scrollX:Number
 
scrollY:Number
 
width:Number
 
height:Number
 
itemCount:int
 
result:Vector.<int> (default = null)

Returns
Vector.<int>
layout()method 
public function layout(items:Vector.<DisplayObject>, viewPortBounds:ViewPortBounds = null, result:LayoutBoundsResult = null):LayoutBoundsResult

Positions (and possibly resizes) the supplied items within the optional bounds argument. If no bounds are specified, the layout algorithm will assume that the bounds start a 0,0 and have unbounded dimensions. Returns the actual bounds of the content, which may be different than the specified bounds.

Note: The items are not absolutely restricted to appear only within the bounds. The bounds can affect positioning, but the algorithm may very well ignore them completely.

If a layout implementation needs to access accurate width and height values from items that are of type IFeathersControl, it must call validate() manually. For performance reasons, the container that is the parent of the items will not call validate() before passing the items to a layout implementation. Meeting this requirement may be as simple as looping through the items at the beginning of layout() and validating all items that are Feathers UI controls:

const itemCount:int = items.length;
for(var i:int = 0; i < itemCount; i++)
{
    var item:IFeathersControl = items[i] as IFeathersControl;
    if(item)
    {
        item.validate();
    }
}

Parameters

items:Vector.<DisplayObject>
 
viewPortBounds:ViewPortBounds (default = null)
 
result:LayoutBoundsResult (default = null)

Returns
LayoutBoundsResult
measureViewPort()method 
public function measureViewPort(itemCount:int, viewPortBounds:ViewPortBounds = null, result:Point = null):Point

Used internally by a component, such as List, to measure the view port based on the typical item dimensions or cached dimensions, if available.

This function is meant to be called by the List or other component that uses the virtual layout. If you're simply creating a layout for a List or another component, do not call this function. It is meant for developers creating custom components only.

Parameters

itemCount:int
 
viewPortBounds:ViewPortBounds (default = null)
 
result:Point (default = null)

Returns
Point
positionDropIndicator()method 
public function positionDropIndicator(dropIndicator:DisplayObject, index:int, x:Number, y:Number, items:Vector.<DisplayObject>, width:Number, height:Number):void

Positions the drop indicator in the layout. Must be called after layout().

Parameters

dropIndicator:DisplayObject
 
index:int
 
x:Number
 
y:Number
 
items:Vector.<DisplayObject>
 
width:Number
 
height:Number

removeFromVariableVirtualCacheAtIndex()method 
override public function removeFromVariableVirtualCacheAtIndex(index:int):void

Removes an item in to the cache at the specified index, moving the values at following indexes down by one.

Parameters

index:int

resetVariableVirtualCache()method 
override public function resetVariableVirtualCache():void

Clears the cached dimensions for all virtualized indices.

resetVariableVirtualCacheAtIndex()method 
override public function resetVariableVirtualCacheAtIndex(index:int, item:DisplayObject = null):void

Clears the cached dimensions for one specific virtualized index.

Parameters

index:int
 
item:DisplayObject (default = null)

Event Detail
change Event
Event Object Type: starling.events.Event
Event.type property = starling.events.Event.CHANGE

Dispatched when a property of the layout changes, indicating that a redraw is probably needed.

The properties of the event object have the following values:

PropertyValue
bubblesfalse
currentTargetThe Object that defines the event listener that handles the event. For example, if you use myButton.addEventListener() to register an event listener, myButton is the value of the currentTarget.
datanull
targetThe Object that dispatched the event; it is not always the Object listening for the event. Use the currentTarget property to always access the Object listening for the event.