UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

129 lines (105 loc) 5.79 kB
import Point from "openfl/geom/Point"; import Rectangle from "openfl/geom/Rectangle"; import Event from "./../events/Event"; import Painter from "./../rendering/Painter"; import DisplayObject from "./DisplayObject"; declare namespace starling.display { /** * A DisplayObjectContainer represents a collection of display objects. * It is the base class of all display objects that act as a container for other objects. By * maintaining an ordered list of children, it defines the back-to-front positioning of the * children within the display tree. * * <p>A container does not a have size in itself. The width and height properties represent the * extents of its children. Changing those properties will scale all children accordingly.</p> * * <p>As this is an abstract class, you can't instantiate it directly, but have to * use a subclass instead. The most lightweight container class is "Sprite".</p> * * <strong>Adding and removing children</strong> * * <p>The class defines methods that allow you to add or remove children. When you add a child, * it will be added at the frontmost position, possibly occluding a child that was added * before. You can access the children via an index. The first child will have index 0, the * second child index 1, etc.</p> * * Adding and removing objects from a container triggers non-bubbling events. * * <ul> * <li><code>Event.ADDED</code>: the object was added to a parent.</li> * <li><code>Event.ADDED_TO_STAGE</code>: the object was added to a parent that is * connected to the stage, thus becoming visible now.</li> * <li><code>Event.REMOVED</code>: the object was removed from a parent.</li> * <li><code>Event.REMOVED_FROM_STAGE</code>: the object was removed from a parent that * is connected to the stage, thus becoming invisible now.</li> * </ul> * * Especially the <code>ADDED_TO_STAGE</code> event is very helpful, as it allows you to * automatically execute some logic (e.g. start an animation) when an object is rendered the * first time. * * @see Sprite * @see DisplayObject */ export class DisplayObjectContainer extends DisplayObject { /** Disposes the resources of all children. */ public /*override*/ dispose():void; // child management /** Adds a child to the container. It will be at the frontmost position. */ public addChild(child:DisplayObject):DisplayObject; /** Adds a child to the container at a certain index. */ public addChildAt(child:DisplayObject, index:number):DisplayObject; /** Removes a child from the container. If the object is not a child, the method returns * <code>null</code>. If requested, the child will be disposed right away. */ public removeChild(child:DisplayObject, dispose?:boolean):DisplayObject; /** Removes a child at a certain index. The index positions of any display objects above * the child are decreased by 1. If requested, the child will be disposed right away. */ public removeChildAt(index:number, dispose?:boolean):DisplayObject; /** Removes a range of children from the container (endIndex included). * If no arguments are given, all children will be removed. */ public removeChildren(beginIndex?:number, endIndex?:number, dispose?:boolean):void; /** Returns a child object at a certain index. If you pass a negative index, * '-1' will return the last child, '-2' the second to last child, etc. */ public getChildAt(index:number):DisplayObject; /** Returns a child object with a certain name (non-recursively). */ public getChildByName(name:string):DisplayObject; /** Returns the index of a child within the container, or "-1" if it is not found. */ public getChildIndex(child:DisplayObject):number; /** Moves a child to a certain index. Children at and after the replaced position move up.*/ public setChildIndex(child:DisplayObject, index:number):void; /** Swaps the indexes of two children. */ public swapChildren(child1:DisplayObject, child2:DisplayObject):void; /** Swaps the indexes of two children. */ public swapChildrenAt(index1:number, index2:number):void; /** Sorts the children according to a given (that works just like the sort function * of the Vector class). */ public sortChildren(compareFunction:(a:DisplayObject, b:DisplayObject)=>number):void; /** Determines if a certain object is a child of the container (recursively). */ public contains(child:DisplayObject):boolean; // other methods /** @inheritDoc */ public /*override*/ getBounds(targetSpace:DisplayObject, out?:Rectangle):Rectangle; /** @inheritDoc */ public /*override*/ hitTest(localPoint:Point):DisplayObject; /** @inheritDoc */ public /*override*/ render(painter:Painter):void; /** Dispatches an event on all children (recursively). The event must not bubble. */ public broadcastEvent(event:Event):void; /** Dispatches an event with the given parameters on all children (recursively). * The method uses an internal pool of event objects to avoid allocations. */ public broadcastEventWith(eventType:string, data?:any):void; /** The number of children of this container. */ public readonly numChildren:number; protected get_numChildren():number; /** If a container is a 'touchGroup', it will act as a single touchable object. * Touch events will have the container as target, not the touched child. * (Similar to 'mouseChildren' in the classic display list, but with inverted logic.) * @default false */ public touchGroup:boolean; protected get_touchGroup():boolean; protected set_touchGroup(value:boolean):boolean; } } export default starling.display.DisplayObjectContainer;