# Class cocos.layer.scrolling.ScrollingManager

        cocosnode.CocosNode --+
                              |
    scene.EventHandlerMixin --+
                              |
              base_layers.Layer --+
                                  |
                                 ScrollingManager

Known Subclasses:
  tiles.ScrollingManager

Manages scrolling of Layers in a Cocos Scene.

Each ScrollableLayer that is added to this manager (via standard list methods) may have pixel dimensions .px_width and .px_height. Tile module MapLayers have these attribtues. The manager will limit scrolling to stay within the pixel boundary of the most limiting layer.

If a layer has no dimensions it will scroll freely and without bound.

The manager is initialised with the viewport (usually a Window) which has the pixel dimensions .width and .height which are used during focusing.

A ScrollingManager knows how to convert pixel coordinates from its own pixel space to the screen space.

## Methods

| __init__(self, viewport=None, do_not_scale=None)
| on_enter(self) Called every time just before the node enters the stage.
| update_view_size(self)
| on_cocos_resize(self, usable_width, usable_height)
| refresh_focus(self)
| set_scale(self, scale)
CocosNode instance | add(self, child, z=0, name=None) Add the child and then update the manager's focus / viewport.
| pixel_from_screen(self, x, y) Look up the Layer-space pixel matching the screen-space pixel.
| pixel_to_screen(self, x, y) Look up the screen-space pixel matching the Layer-space pixel.
| set_focus(self, fx, fy, force=False) Determine the viewport based on a desired focus pixel in the Layer space (fx, fy) and honoring any bounding restrictions of child layers.
| force_focus(self, fx, fy) Force the manager to focus on a point, regardless of any managed layer visible boundaries.
| set_state(self)
| unset_state(self)
| visit(self) This function visits it's children in a recursive way.
| __contains__(self, child) (Inherited from cocos.cocosnode.CocosNode)
| are_actions_running(self) Determine whether any actions are running. (Inherited from cocos.cocosnode.CocosNode)
Action instance | do(self, action, target=None) Executes an action. (Inherited from cocos.cocosnode.CocosNode)
| draw(self, *args, **kwargs) This is the function you will have to override if you want your subclassed to draw something on screen. (Inherited from cocos.cocosnode.CocosNode)
CocosNode | get(self, name) Gets a child from the container given its name (Inherited from cocos.cocosnode.CocosNode)
CocosNode or None | get_ancestor(self, klass) Walks the nodes tree upwards until it finds a node of the class `klass` or returns None (Inherited from cocos.cocosnode.CocosNode)
list of CocosNode | get_children(self) Return a list with the node's childs (Inherited from cocos.cocosnode.CocosNode)
euclid.Matrix3 | get_local_inverse(self) returns an euclid.Matrix3 with the local inverse transformation matrix (Inherited from cocos.cocosnode.CocosNode)
euclid.Matrix3 | get_local_transform(self) returns an euclid.Matrix3 with the local transformation matrix (Inherited from cocos.cocosnode.CocosNode)
euclid.Matrix3 | get_world_inverse(self) returns an euclid.Matrix3 with the world inverse transformation matrix (Inherited from cocos.cocosnode.CocosNode)
euclid.Matrix3 | get_world_transform(self) returns an euclid.Matrix3 with the world transformation matrix (Inherited from cocos.cocosnode.CocosNode)
| kill(self) Remove this object from its parent, and thus most likely from everything. (Inherited from cocos.cocosnode.CocosNode)
| on_exit(self) Called every time just before the node leaves the stage (Inherited from cocos.layer.base_layers.Layer)
| pause(self) Suspends the execution of actions. (Inherited from cocos.cocosnode.CocosNode)
| pause_scheduler(self) Time will stop passing for this node: scheduled callbacks will not be called, worker actions will not be called (Inherited from cocos.cocosnode.CocosNode)
euclid.Vector2 | point_to_local(self, p) returns an euclid.Vector2 converted to local space (Inherited from cocos.cocosnode.CocosNode)
euclid.Vector2 | point_to_world(self, p) returns an euclid.Vector2 converted to world space (Inherited from cocos.cocosnode.CocosNode)
| push_all_handlers(self) registers itself to receive director.window events and propagates the call to childs that are layers. (Inherited from cocos.layer.base_layers.Layer)
| remove(self, obj) Removes a child from the container given its name or object (Inherited from cocos.cocosnode.CocosNode)
| remove_action(self, action) Removes an action from the node actions container, potentially calling action.stop() (Inherited from cocos.cocosnode.CocosNode)
| remove_all_handlers(self) de-registers itself to receive director.window events and propagates the call to childs that are layers. (Inherited from cocos.layer.base_layers.Layer)
| resume(self) Resumes the execution of actions. (Inherited from cocos.cocosnode.CocosNode)
| resume_scheduler(self) Time will continue/start passing for this node and callbacks will be called, worker actions will be called (Inherited from cocos.cocosnode.CocosNode)
| schedule(self, callback, *args, **kwargs) Schedule a function to be called every frame. (Inherited from cocos.cocosnode.CocosNode)
| schedule_interval(self, callback, interval, *args, **kwargs) Schedule a function to be called every `interval` seconds. (Inherited from cocos.cocosnode.CocosNode)
| stop(self) Removes all actions from the running action list (Inherited from cocos.cocosnode.CocosNode)
| transform(self) Apply ModelView transformations (Inherited from cocos.cocosnode.CocosNode)
| unschedule(self, callback) Remove a function from the schedule. (Inherited from cocos.cocosnode.CocosNode)
list | walk(self, callback, collect=None) Executes callback on all the subtree starting at self. (Inherited from cocos.cocosnode.CocosNode)

## Properties

| scale
(int,int) | anchor Anchor point of the object. (Inherited from cocos.cocosnode.CocosNode)
(int,int) | anchor_x Anchor x value for transformations and adding children (Inherited from cocos.cocosnode.CocosNode)
(int,int) | anchor_y Anchor y value for transformations and adding children (Inherited from cocos.cocosnode.CocosNode)
object | parent The parent of this object. (Inherited from cocos.cocosnode.CocosNode)
(int, int) | position The (x, y) coordinates of the object. (Inherited from cocos.cocosnode.CocosNode)
| rotation (Inherited from cocos.cocosnode.CocosNode)
(int,int) | transform_anchor Transformation anchor point. (Inherited from cocos.cocosnode.CocosNode)
| x The x coordinate of the object (Inherited from cocos.cocosnode.CocosNode)
| y The y coordinate of the object (Inherited from cocos.cocosnode.CocosNode)

## Instance Variables

| actions list of Action objects that are running (Inherited from cocos.cocosnode.CocosNode)
| camera eye, center and up vector for the Camera. (Inherited from cocos.cocosnode.CocosNode)
| children list of children. (Inherited from cocos.cocosnode.CocosNode)
| children_names dictionary that maps children names with children references (Inherited from cocos.cocosnode.CocosNode)
| grid the grid object for the grid actions. (Inherited from cocos.cocosnode.CocosNode)
| is_running whether of not the object is running (Inherited from cocos.cocosnode.CocosNode)
| scheduled_calls list of scheduled callbacks (Inherited from cocos.cocosnode.CocosNode)
| scheduled_interval_calls list of scheduled interval callbacks (Inherited from cocos.cocosnode.CocosNode)
| skip_frame whether or not the next frame will be skipped (Inherited from cocos.cocosnode.CocosNode)
| to_remove list of Action objects to be removed (Inherited from cocos.cocosnode.CocosNode)
| transform_anchor_x offset from (x,0) from where rotation and scale will be applied. (Inherited from cocos.cocosnode.CocosNode)
| transform_anchor_y offset from (0,y) from where rotation and scale will be applied. (Inherited from cocos.cocosnode.CocosNode)
| visible whether of not the object is visible. (Inherited from cocos.cocosnode.CocosNode)

## Class Variables

| is_event_handler = `False` if True the layer will listen to director.window events Default: False if true, the event handlers of this layer will be registered. (Inherited from cocos.layer.base_layers.Layer)

## Method Details

### __init__

(Constructor) __init__(self, viewport=None, do_not_scale=None)

Overrides:
  base_layers.Layer.__init__

### on_enter

on_enter(self)

Called every time just before the node enters the stage.

Schedulled calls and worker actions continues to perform

Good point to do .push_handlers if you have custom ones Rule: a handler pushed there is near certain to require a .pop_handlers in the .on_exit method (else it will be called even after removed from the active scene, or, if going on stage again will be called multiple times for each event ocurrence)

Overrides:
  base_layers.Layer.on_enter

### add

add(self, child, z=0, name=None)
Add the child and then update the manager's focus / viewport.

Returns:
  CocosNode instance: self
Overrides:
  cocosnode.CocosNode.add

### pixel_from_screen

pixel_from_screen(self, x, y)

Look up the Layer-space pixel matching the screen-space pixel.

Account for viewport, layer and screen transformations.

### pixel_to_screen

pixel_to_screen(self, x, y)

Look up the screen-space pixel matching the Layer-space pixel.

Account for viewport, layer and screen transformations.

### set_focus

set_focus(self, fx, fy, force=False)

Determine the viewport based on a desired focus pixel in the Layer space (fx, fy) and honoring any bounding restrictions of child layers.

The focus will always be shifted to ensure no child layers display out-of-bounds data, as defined by their dimensions px_width and px_height.

### visit

visit(self)

This function visits it's children in a recursive way.

It will first visit the children that that have a z-order value less than 0.

Then it will call the draw method to draw itself.

And finally it will visit the rest of the children (the ones with a z-value bigger or equal than 0)

Before visiting any children it will call the transform method to apply any possible transformation.

Overrides:
  cocosnode.CocosNode.visit

## Property Details

### scale