# Stage

继承 Stage Container View 模块 hilo/view/Stage 依赖 hilo/core/Hilo, hilo/core/Class, hilo/view/Container, hilo/renderer/CanvasRenderer, hilo/renderer/DOMRenderer, hilo/renderer/WebGLRenderer, hilo/util/browser, hilo/util/util 源码 Stage.js
舞台是可视对象树的根，可视对象只有添加到舞台或其子对象后才会被渲染出来。创建一个hilo应用一般都是从创建一个stage开始的。
示例:

    var stage = new Hilo.Stage({
        renderType:'canvas',
        container: containerElement,
        width: 320,
        height: 480
    });

### 属性概览

显示继承属性

| 属性 | 定义于
--- | --- | ---
| canvas:HTMLCanvasElement|HTMLElement 舞台所对应的画布。它可以是一个canvas或一个普通的div。只读属性。 | Stage
| paused:Boolean 指示舞台是否暂停刷新渲染。 | Stage
| renderer:Renderer 舞台渲染器。只读属性。 | Stage
| viewport:Object 舞台内容在页面中的渲染区域。包含的属性有：left、top、width、height。只读属性。 | Stage
| align:String|Function 可视对象相对于父容器的对齐方式。取值可查看Hilo.align枚举对象。 | View
| alpha:Number 可视对象的透明度。默认值为1。 | View
| background:Object 可视对象的背景样式。可以是CSS颜色值、canvas的gradient或pattern填充。 | View
| boundsArea:Array 可视对象的区域顶点数组。格式为：[{x:10, y:10}, {x:20, y:20}]。 | View
| children:Array 容器的子元素列表。只读。 | Container
| clipChildren:Boolean 指示是否裁剪超出容器范围的子元素。默认为false。 | Container
| depth:Number 可视对象的深度，也即z轴的序号。只读属性。 | View
| drawable:Drawable 可视对象的可绘制对象。供高级开发使用。 | View
| height:Number 可视对象的高度。默认值为0。 | View
| id:String 可视对象的唯一标识符。 | View
| mask:Graphics 可视对象的遮罩图形。 | View
| onUpdate:Function 更新可视对象，此方法会在可视对象渲染之前调用。此函数可以返回一个Boolean值。若返回false，则此对象不会渲染。默认值为null。 限制：如果在此函数中改变了可视对象在其父容器中的层级，当前渲染帧并不会正确渲染，而是在下一渲染帧。可在其父容器的onUpdate方法中来实现。 | View
| parent:Container 可视对象的父容器。只读属性。 | View
| pivotX:Number 可视对象的中心点的x轴坐标。默认值为0。 | View
| pivotY:Number 可视对象的中心点的y轴坐标。默认值为0。 | View
| pointerChildren:Boolean 指示容器的子元素是否能响应用户交互事件。默认为true。 | Container
| pointerEnabled:Boolean 可视对象是否接受交互事件。默认为接受交互事件，即true。 | View
| rotation:Number 可视对象的旋转角度。默认值为0。 | View
| scaleX:Number 可视对象在x轴上的缩放比例。默认为不缩放，即1。 | View
| scaleY:Number 可视对象在y轴上的缩放比例。默认为不缩放，即1。 | View
| tint:Number 可视对象的附加颜色，默认0xFFFFFF，只支持WebGL模式。 | View
| transform:Matrix 可视对象的transform属性，如果设置将忽略x, y, scaleX, scaleY, rotation. | View
| visible:Boolean 可视对象是否可见。默认为可见，即true。 | View
| width:Number 可视对象的宽度。默认值为0。 | View
| x:Number 可视对象的x轴坐标。默认值为0。 | View
| y:Number 可视对象的y轴坐标。默认值为0。 | View

### 方法概览

显示继承方法

| 方法 | 定义于
--- | --- | ---
| Stage(properties:Object) 构造函数 | Stage
| addTo(domElement:HTMLElement):Stage 添加舞台画布到DOM容器中。注意：此方法覆盖了View.addTo方法。 | Stage
| enableDOMEvent(type:String|Array, enabled:Boolean):Stage 开启/关闭舞台的DOM事件响应。要让舞台上的可视对象响应用户交互，必须先使用此方法开启舞台的相应事件的响应。 | Stage
| resize(width:Number, height:Number, forceResize:Boolean) 改变舞台的大小。 | Stage
| tick(delta:Number) 调用tick会触发舞台的更新和渲染。开发者一般无需使用此方法。 | Stage
| updateViewport():Object 更新舞台在页面中的可视区域，即渲染区域。当舞台canvas的样式border、margin、padding等属性更改后，需要调用此方法更新舞台渲染区域。 | Stage
| addChild(child:View) 在最上面添加子元素。 | Container
| addChildAt(child:View, index:Number) 在指定索引位置添加子元素。 | Container
| contains(child:View) 返回是否包含参数指定的子元素。 | Container
| fire(type:String, detail:Object):Boolean 发送事件。当第一个参数类型为Object时，则把它作为一个整体事件对象。 | View
| getBounds():Array 获取可视对象在舞台全局坐标系内的外接矩形以及所有顶点坐标。 | View
| getChildAt(index:Number) 返回指定索引位置的子元素。 | Container
| getChildById(id:String) 返回指定id的子元素。 | Container
| getChildIndex(child:View) 返回指定子元素的索引值。 | Container
| getNumChildren():Uint 返回容器的子元素的数量。 | Container
| getScaledHeight():Number 返回可视对象缩放后的高度。 | View
| getScaledWidth():Number 返回可视对象缩放后的宽度。 | View
| getStage():Stage 返回可视对象的舞台引用。若对象没有被添加到舞台，则返回null。 | View
| getViewAtPoint(x:Number, y:Number, usePolyCollision:Boolean, global:Boolean, eventMode:Boolean) 返回由x和y指定的点下的对象。 | Container
| hitTestObject(object:View, usePolyCollision:Boolean) 检测object参数指定的对象是否与其相交。 | View
| hitTestPoint(x:Number, y:Number, usePolyCollision:Boolean):Boolean 检测由x和y参数指定的点是否在其外接矩形之内。 | View
| off(type:String, listener:Function):Object 删除一个事件监听。如果不传入任何参数，则删除所有的事件监听；如果不传入第二个参数，则删除指定类型的所有事件监听。 | View
| on(type:String, listener:Function, once:Boolean):Object 增加一个事件监听。 | View
| removeAllChildren():Container 删除所有的子元素。 | Container
| removeChild(child:View):View 删除指定的子元素。 | Container
| removeChildAt(index:Int):View 在指定索引位置删除子元素。 | Container
| removeChildById(id:String):View 删除指定id的子元素。 | Container
| removeFromParent():View 从父容器里删除此对象。 | View
| render(renderer:Renderer, delta:Number) 可视对象的具体渲染逻辑。子类可通过覆盖此方法实现自己的渲染。 | View
| setChildIndex(child:View, index:Number) 设置子元素的索引位置。 | Container
| sortChildren(keyOrFunction:Object) 根据指定键值或函数对子元素进行排序。 | Container
| swapChildren(child1:View, child2:View) 交换两个子元素的索引位置。 | Container
| swapChildrenAt(index1:Number, index2:Number) 交换两个指定索引位置的子元素。 | Container
| toString():String 返回可视对象的字符串表示。 | View

### 属性详情

canvas:HTMLCanvasElement|HTMLElement
舞台所对应的画布。它可以是一个canvas或一个普通的div。只读属性。
paused:Boolean
指示舞台是否暂停刷新渲染。
renderer:Renderer
舞台渲染器。只读属性。
viewport:Object
舞台内容在页面中的渲染区域。包含的属性有：left、top、width、height。只读属性。

### 构造函数

Stage(properties:Object)

parameters
properties:Object — 创建对象的属性参数。可包含此类所有可写属性。主要有：

- container:String|HTMLElement - 指定舞台在页面中的父容器元素。它是一个dom容器或id。若不传入此参数且canvas未被加入到dom树，则需要在舞台创建后手动把舞台画布加入到dom树中，否则舞台不会被渲染。可选。
- renderType:String - 指定渲染方式，canvas|dom|webgl，默认canvas。可选。
- canvas:String|HTMLCanvasElement|HTMLElement - 指定舞台所对应的画布元素。它是一个canvas或普通的div，也可以传入元素的id。若为canvas，则使用canvas来渲染所有对象，否则使用dom+css来渲染。可选。
- width:Number
- 指定舞台的宽度。默认为canvas的宽度。可选。
- height:Number
- 指定舞台的高度。默认为canvas的高度。可选。
- paused:Boolean
- 指定舞台是否停止渲染。默认为false。可选。

### 方法详情

addTo(domElement:HTMLElement):Stage
添加舞台画布到DOM容器中。注意：此方法覆盖了View.addTo方法。

parameters
domElement:HTMLElement — 一个dom元素。

return
  Stage — 舞台本身，可用于链式调用。

enableDOMEvent(type:String|Array, enabled:Boolean):Stage
开启/关闭舞台的DOM事件响应。要让舞台上的可视对象响应用户交互，必须先使用此方法开启舞台的相应事件的响应。

parameters
type:String|Array — 要开启/关闭的事件名称或数组。
enabled:Boolean — 指定开启还是关闭。如果不传此参数，则默认为开启。

return
  Stage — 舞台本身。链式调用支持。

resize(width:Number, height:Number, forceResize:Boolean)
改变舞台的大小。

parameters
width:Number — 指定舞台新的宽度。
height:Number — 指定舞台新的高度。
forceResize:Boolean — 指定是否强制改变舞台大小，即不管舞台大小是否相同，仍然强制执行改变动作，可确保舞台、画布以及视窗之间的尺寸同步。

tick(delta:Number)
调用tick会触发舞台的更新和渲染。开发者一般无需使用此方法。

parameters
delta:Number — 调度器当前调度与上次调度tick之间的时间差。

updateViewport():Object
更新舞台在页面中的可视区域，即渲染区域。当舞台canvas的样式border、margin、padding等属性更改后，需要调用此方法更新舞台渲染区域。

return
  Object — 舞台的可视区域。即viewport属性。