laya-coreui-es
Version:
laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改
642 lines (638 loc) • 33.7 kB
TypeScript
import { EventDispatcher } from "../events/EventDispatcher";
import { Matrix } from "../maths/Matrix";
import { Point } from "../maths/Point";
import { Rectangle } from "../maths/Rectangle";
import { Context } from "../resource/Context";
import { HTMLCanvas } from "../resource/HTMLCanvas";
import { Texture } from "../resource/Texture";
import { Texture2D } from "../resource/Texture2D";
import { Handler } from "../utils/Handler";
import { BoundsStyle } from "./css/BoundsStyle";
import { CacheStyle } from "./css/CacheStyle";
import { SpriteStyle } from "./css/SpriteStyle";
import { Graphics } from "./Graphics";
import { Node } from "./Node";
import { Stage } from "./Stage";
import { RenderTexture2D } from "../resource/RenderTexture2D";
/**在显示对象上按下后调度。
* @eventType Event.MOUSE_DOWN
* */
/**在显示对象抬起后调度。
* @eventType Event.MOUSE_UP
* */
/**鼠标在对象身上进行移动后调度
* @eventType Event.MOUSE_MOVE
* */
/**鼠标经过对象后调度。
* @eventType Event.MOUSE_OVER
* */
/**鼠标离开对象后调度。
* @eventType Event.MOUSE_OUT
* */
/**鼠标点击对象后调度。
* @eventType Event.CLICK
* */
/**开始拖动后调度。
* @eventType Event.DRAG_START
* */
/**拖动中调度。
* @eventType Event.DRAG_MOVE
* */
/**拖动结束后调度。
* @eventType Event.DRAG_END
* */
/**
* <p> <code>Sprite</code> 是基本的显示图形的显示列表节点。 <code>Sprite</code> 默认没有宽高,默认不接受鼠标事件。通过 <code>graphics</code> 可以绘制图片或者矢量图,支持旋转,缩放,位移等操作。<code>Sprite</code>同时也是容器类,可用来添加多个子节点。</p>
* <p>注意: <code>Sprite</code> 默认没有宽高,可以通过<code>getBounds</code>函数获取;也可手动设置宽高;还可以设置<code>autoSize=true</code>,然后再获取宽高。<code>Sprite</code>的宽高一般用于进行碰撞检测和排版,并不影响显示图像大小,如果需要更改显示图像大小,请使用 <code>scaleX</code> , <code>scaleY</code> , <code>scale</code>。</p>
* <p> <code>Sprite</code> 默认不接受鼠标事件,即<code>mouseEnabled=false</code>,但是只要对其监听任意鼠标事件,会自动打开自己以及所有父对象的<code>mouseEnabled=true</code>。所以一般也无需手动设置<code>mouseEnabled</code>。</p>
* <p>LayaAir引擎API设计精简巧妙。核心显示类只有一个<code>Sprite</code>。<code>Sprite</code>针对不同的情况做了渲染优化,所以保证一个类实现丰富功能的同时,又达到高性能。</p>
*
* @example <caption>创建了一个 <code>Sprite</code> 实例。</caption>
* package
* {
* import laya.display.Sprite;
* import laya.events.Event;
*
* public class Sprite_Example
* {
* private var sprite:Sprite;
* private var shape:Sprite
* public function Sprite_Example()
* {
* Laya.init(640, 800);//设置游戏画布宽高、渲染模式。
* Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。
* onInit();
* }
* private function onInit():void
* {
* sprite = new Sprite();//创建一个 Sprite 类的实例对象 sprite 。
* sprite.loadImage("resource/ui/bg.png");//加载并显示图片。
* sprite.x = 200;//设置 sprite 对象相对于父容器的水平方向坐标值。
* sprite.y = 200;//设置 sprite 对象相对于父容器的垂直方向坐标值。
* sprite.pivotX = 0;//设置 sprite 对象的水平方法轴心点坐标。
* sprite.pivotY = 0;//设置 sprite 对象的垂直方法轴心点坐标。
* Laya.stage.addChild(sprite);//将此 sprite 对象添加到显示列表。
* sprite.on(Event.CLICK, this, onClickSprite);//给 sprite 对象添加点击事件侦听。
* shape = new Sprite();//创建一个 Sprite 类的实例对象 sprite 。
* shape.graphics.drawRect(0, 0, 100, 100, "#ccff00", "#ff0000", 2);//绘制一个有边框的填充矩形。
* shape.x = 400;//设置 shape 对象相对于父容器的水平方向坐标值。
* shape.y = 200;//设置 shape 对象相对于父容器的垂直方向坐标值。
* shape.width = 100;//设置 shape 对象的宽度。
* shape.height = 100;//设置 shape 对象的高度。
* shape.pivotX = 50;//设置 shape 对象的水平方法轴心点坐标。
* shape.pivotY = 50;//设置 shape 对象的垂直方法轴心点坐标。
* Laya.stage.addChild(shape);//将此 shape 对象添加到显示列表。
* shape.on(Event.CLICK, this, onClickShape);//给 shape 对象添加点击事件侦听。
* }
* private function onClickSprite():void
* {
* trace("点击 sprite 对象。");
* sprite.rotation += 5;//旋转 sprite 对象。
* }
* private function onClickShape():void
* {
* trace("点击 shape 对象。");
* shape.rotation += 5;//旋转 shape 对象。
* }
* }
* }
*
* @example
* var sprite;
* var shape;
* Sprite_Example();
* function Sprite_Example()
* {
* Laya.init(640, 800);//设置游戏画布宽高、渲染模式。
* Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。
* onInit();
* }
* function onInit()
* {
* sprite = new laya.display.Sprite();//创建一个 Sprite 类的实例对象 sprite 。
* sprite.loadImage("resource/ui/bg.png");//加载并显示图片。
* sprite.x = 200;//设置 sprite 对象相对于父容器的水平方向坐标值。
* sprite.y = 200;//设置 sprite 对象相对于父容器的垂直方向坐标值。
* sprite.pivotX = 0;//设置 sprite 对象的水平方法轴心点坐标。
* sprite.pivotY = 0;//设置 sprite 对象的垂直方法轴心点坐标。
* Laya.stage.addChild(sprite);//将此 sprite 对象添加到显示列表。
* sprite.on(Event.CLICK, this, onClickSprite);//给 sprite 对象添加点击事件侦听。
* shape = new laya.display.Sprite();//创建一个 Sprite 类的实例对象 sprite 。
* shape.graphics.drawRect(0, 0, 100, 100, "#ccff00", "#ff0000", 2);//绘制一个有边框的填充矩形。
* shape.x = 400;//设置 shape 对象相对于父容器的水平方向坐标值。
* shape.y = 200;//设置 shape 对象相对于父容器的垂直方向坐标值。
* shape.width = 100;//设置 shape 对象的宽度。
* shape.height = 100;//设置 shape 对象的高度。
* shape.pivotX = 50;//设置 shape 对象的水平方法轴心点坐标。
* shape.pivotY = 50;//设置 shape 对象的垂直方法轴心点坐标。
* Laya.stage.addChild(shape);//将此 shape 对象添加到显示列表。
* shape.on(laya.events.Event.CLICK, this, onClickShape);//给 shape 对象添加点击事件侦听。
* }
* function onClickSprite()
* {
* console.log("点击 sprite 对象。");
* sprite.rotation += 5;//旋转 sprite 对象。
* }
* function onClickShape()
* {
* console.log("点击 shape 对象。");
* shape.rotation += 5;//旋转 shape 对象。
* }
*
* @example
* import Sprite = laya.display.Sprite;
* class Sprite_Example {
* private sprite: Sprite;
* private shape: Sprite
* public Sprite_Example() {
* Laya.init(640, 800);//设置游戏画布宽高、渲染模式。
* Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。
* this.onInit();
* }
* private onInit(): void {
* this.sprite = new Sprite();//创建一个 Sprite 类的实例对象 sprite 。
* this.sprite.loadImage("resource/ui/bg.png");//加载并显示图片。
* this.sprite.x = 200;//设置 sprite 对象相对于父容器的水平方向坐标值。
* this.sprite.y = 200;//设置 sprite 对象相对于父容器的垂直方向坐标值。
* this.sprite.pivotX = 0;//设置 sprite 对象的水平方法轴心点坐标。
* this.sprite.pivotY = 0;//设置 sprite 对象的垂直方法轴心点坐标。
* Laya.stage.addChild(this.sprite);//将此 sprite 对象添加到显示列表。
* this.sprite.on(laya.events.Event.CLICK, this, this.onClickSprite);//给 sprite 对象添加点击事件侦听。
* this.shape = new Sprite();//创建一个 Sprite 类的实例对象 sprite 。
* this.shape.graphics.drawRect(0, 0, 100, 100, "#ccff00", "#ff0000", 2);//绘制一个有边框的填充矩形。
* this.shape.x = 400;//设置 shape 对象相对于父容器的水平方向坐标值。
* this.shape.y = 200;//设置 shape 对象相对于父容器的垂直方向坐标值。
* this.shape.width = 100;//设置 shape 对象的宽度。
* this.shape.height = 100;//设置 shape 对象的高度。
* this.shape.pivotX = 50;//设置 shape 对象的水平方法轴心点坐标。
* this.shape.pivotY = 50;//设置 shape 对象的垂直方法轴心点坐标。
* Laya.stage.addChild(this.shape);//将此 shape 对象添加到显示列表。
* this.shape.on(laya.events.Event.CLICK, this, this.onClickShape);//给 shape 对象添加点击事件侦听。
* }
* private onClickSprite(): void {
* console.log("点击 sprite 对象。");
* this.sprite.rotation += 5;//旋转 sprite 对象。
* }
* private onClickShape(): void {
* console.log("点击 shape 对象。");
* this.shape.rotation += 5;//旋转 shape 对象。
* }
* }
*/
export declare class Sprite extends Node {
/**
* <p>鼠标事件与此对象的碰撞检测是否可穿透。碰撞检测发生在鼠标事件的捕获阶段,此阶段引擎会从stage开始递归检测stage及其子对象,直到找到命中的目标对象或者未命中任何对象。</p>
* <p>穿透表示鼠标事件发生的位置处于本对象绘图区域内时,才算命中,而与对象宽高和值为Rectangle对象的hitArea属性无关。如果sprite.hitArea值是HitArea对象,表示显式声明了此对象的鼠标事件响应区域,而忽略对象的宽高、mouseThrough属性。</p>
* <p>影响对象鼠标事件响应区域的属性为:width、height、hitArea,优先级顺序为:hitArea(type:HitArea)>hitArea(type:Rectangle)>width/height。</p>
* @default false 不可穿透,此对象的鼠标响应区域由width、height、hitArea属性决定。</p>
*/
mouseThrough: boolean;
/**
* <p>指定是否自动计算宽高数据。默认值为 false 。</p>
* <p>Sprite宽高默认为0,并且不会随着绘制内容的变化而变化,如果想根据绘制内容获取宽高,可以设置本属性为true,或者通过getBounds方法获取。设置为true,对性能有一定影响。</p>
*/
autoSize: boolean;
/**
* <p>指定鼠标事件检测是优先检测自身,还是优先检测其子对象。鼠标事件检测发生在鼠标事件的捕获阶段,此阶段引擎会从stage开始递归检测stage及其子对象,直到找到命中的目标对象或者未命中任何对象。</p>
* <p>如果为false,优先检测子对象,当有子对象被命中时,中断检测,获得命中目标。如果未命中任何子对象,最后再检测此对象;如果为true,则优先检测本对象,如果本对象没有被命中,直接中断检测,表示没有命中目标;如果本对象被命中,则进一步递归检测其子对象,以确认最终的命中目标。</p>
* <p>合理使用本属性,能减少鼠标事件检测的节点,提高性能。可以设置为true的情况:开发者并不关心此节点的子节点的鼠标事件检测结果,也就是以此节点作为其子节点的鼠标事件检测依据。</p>
* <p>Stage对象和UI的View组件默认为true。</p>
* @default false 优先检测此对象的子对象,当递归检测完所有子对象后,仍然没有找到目标对象,最后再检测此对象。
*/
hitTestPrior: boolean;
/**
* @inheritDoc
* @override
*/
destroy(destroyChild?: boolean): void;
constructor();
/**根据zOrder进行重新排序。*/
updateZOrder(): void;
/**
* 设置是否开启自定义渲染,只有开启自定义渲染,才能使用customRender函数渲染。
*/
set customRenderEnable(b: boolean);
/**
* 指定显示对象是否缓存为静态图像,cacheAs时,子对象发生变化,会自动重新缓存,同时也可以手动调用reCache方法更新缓存。
* 建议把不经常变化的“复杂内容”缓存为静态图像,能极大提高渲染性能。cacheAs有"none","normal"和"bitmap"三个值可选。
* 默认为"none",不做任何缓存。
* 当值为"normal"时,canvas模式下进行画布缓存,webgl模式下进行命令缓存。
* 当值为"bitmap"时,canvas模式下进行依然是画布缓存,webgl模式下使用renderTarget缓存。
* webgl下renderTarget缓存模式缺点:会额外创建renderTarget对象,增加内存开销,缓存面积有最大2048限制,不断重绘时会增加CPU开销。优点:大幅减少drawcall,渲染性能最高。
* webgl下命令缓存模式缺点:只会减少节点遍历及命令组织,不会减少drawcall数,性能中等。优点:没有额外内存开销,无需renderTarget支持。
*/
get cacheAs(): string;
set cacheAs(value: string);
/**
* 更新_cnavas相关的状态
*/
private _checkCanvasEnable;
/**设置cacheAs为非空时此值才有效,staticCache=true时,子对象变化时不会自动更新缓存,只能通过调用reCache方法手动刷新。*/
get staticCache(): boolean;
set staticCache(value: boolean);
/**在设置cacheAs的情况下,调用此方法会重新刷新缓存。*/
reCache(): void;
getRepaint(): number;
/**表示显示对象相对于父容器的水平方向坐标值。*/
get x(): number;
set x(value: number);
/**表示显示对象相对于父容器的垂直方向坐标值。*/
get y(): number;
set y(value: number);
/**
* <p>显示对象的宽度,单位为像素,默认为0。</p>
* <p>此宽度用于鼠标碰撞检测,并不影响显示对象图像大小。需要对显示对象的图像进行缩放,请使用scale、scaleX、scaleY。</p>
* <p>可以通过getbounds获取显示对象图像的实际宽度。</p>
*/
get width(): number;
set width(value: number);
set_width(value: number): void;
get_width(): number;
/**
* <p>显示对象的高度,单位为像素,默认为0。</p>
* <p>此高度用于鼠标碰撞检测,并不影响显示对象图像大小。需要对显示对象的图像进行缩放,请使用scale、scaleX、scaleY。</p>
* <p>可以通过getbounds获取显示对象图像的实际高度。</p>
*/
get height(): number;
set height(value: number);
set_height(value: number): void;
get_height(): number;
/**
* <p>对象的显示宽度(以像素为单位)。</p>
*/
get displayWidth(): number;
/**
* <p>对象的显示高度(以像素为单位)。</p>
*/
get displayHeight(): number;
/**
* 设置对象bounds大小,如果有设置,则不再通过getBounds计算,合理使用能提高性能。
* @param bound bounds矩形区域
*/
setSelfBounds(bound: Rectangle): void;
/**
* <p>获取本对象在父容器坐标系的矩形显示区域。</p>
* <p><b>注意:</b>计算量较大,尽量少用。</p>
* @return 矩形区域。
*/
getBounds(): Rectangle;
/**
* 获取本对象在自己坐标系的矩形显示区域。
* <p><b>注意:</b>计算量较大,尽量少用。</p>
* @return 矩形区域。
*/
getSelfBounds(): Rectangle;
/**
* 返回此实例中的绘图对象( <code>Graphics</code> )的显示区域,不包括子对象。
* @param realSize (可选)使用图片的真实大小,默认为false
* @return 一个 Rectangle 对象,表示获取到的显示区域。
*/
getGraphicBounds(realSize?: boolean): Rectangle;
/**
* @private
* 获取样式。
* @return 样式 Style 。
*/
getStyle(): SpriteStyle;
/**
* @private
* 设置样式。
* @param value 样式。
*/
setStyle(value: SpriteStyle): void;
/**X轴缩放值,默认值为1。设置为负数,可以实现水平反转效果,比如scaleX=-1。*/
get scaleX(): number;
set scaleX(value: number);
/**Y轴缩放值,默认值为1。设置为负数,可以实现垂直反转效果,比如scaleX=-1。*/
get scaleY(): number;
set scaleY(value: number);
set_scaleX(value: number): void;
get_scaleX(): number;
set_scaleY(value: number): void;
get_scaleY(): number;
/**旋转角度,默认值为0。以角度为单位。*/
get rotation(): number;
set rotation(value: number);
/**水平倾斜角度,默认值为0。以角度为单位。*/
get skewX(): number;
set skewX(value: number);
/**垂直倾斜角度,默认值为0。以角度为单位。*/
get skewY(): number;
set skewY(value: number);
/**@private */
protected _adjustTransform(): Matrix;
/**
* <p>对象的矩阵信息。通过设置矩阵可以实现节点旋转,缩放,位移效果。</p>
* <p>矩阵更多信息请参考 <code>Matrix</code></p>
*/
get transform(): Matrix;
set transform(value: Matrix);
get_transform(): Matrix;
set_transform(value: Matrix): void;
/**X轴 轴心点的位置,单位为像素,默认为0。轴心点会影响对象位置,缩放中心,旋转中心。*/
get pivotX(): number;
set pivotX(value: number);
/**Y轴 轴心点的位置,单位为像素,默认为0。轴心点会影响对象位置,缩放中心,旋转中心。*/
get pivotY(): number;
set pivotY(value: number);
/**透明度,值为0-1,默认值为1,表示不透明。更改alpha值会影响drawcall。*/
get alpha(): number;
set alpha(value: number);
/**表示是否可见,默认为true。如果设置不可见,节点将不被渲染。*/
get visible(): boolean;
set visible(value: boolean);
get_visible(): boolean;
set_visible(value: boolean): void;
/**指定要使用的混合模式。目前只支持"lighter"。*/
get blendMode(): string;
set blendMode(value: string);
/**绘图对象。封装了绘制位图和矢量图的接口,Sprite所有的绘图操作都通过Graphics来实现的。*/
get graphics(): Graphics;
set graphics(value: Graphics);
/**
* <p>显示对象的滚动矩形范围,具有裁剪效果(如果只想限制子对象渲染区域,请使用viewport)</p>
* <p> srollRect和viewport的区别:<br/>
* 1.srollRect自带裁剪效果,viewport只影响子对象渲染是否渲染,不具有裁剪效果(性能更高)。<br/>
* 2.设置rect的x,y属性均能实现区域滚动效果,但scrollRect会保持0,0点位置不变。</p>
*/
get scrollRect(): Rectangle;
set scrollRect(value: Rectangle);
/**
* <p>设置坐标位置。相当于分别设置x和y属性。</p>
* <p>因为返回值为Sprite对象本身,所以可以使用如下语法:spr.pos(...).scale(...);</p>
* @param x X轴坐标。
* @param y Y轴坐标。
* @param speedMode (可选)是否极速模式,正常是调用this.x=value进行赋值,极速模式直接调用内部函数处理,如果未重写x,y属性,建议设置为急速模式性能更高。
* @return 返回对象本身。
*/
pos(x: number, y: number, speedMode?: boolean): Sprite;
/**
* <p>设置轴心点。相当于分别设置pivotX和pivotY属性。</p>
* <p>因为返回值为Sprite对象本身,所以可以使用如下语法:spr.pivot(...).pos(50, 100);</p>
* @param x X轴心点。
* @param y Y轴心点。
* @return 返回对象本身。
*/
pivot(x: number, y: number): Sprite;
/**
* <p>设置宽高。相当于分别设置width和height属性。</p>
* <p>因为返回值为Sprite对象本身,所以可以使用如下语法:spr.size(...).pos(50, 100);</p>
* @param width 宽度值。
* @param hegiht 高度值。
* @return 返回对象本身。
*/
size(width: number, height: number): Sprite;
/**
* <p>设置缩放。相当于分别设置scaleX和scaleY属性。</p>
* <p>因为返回值为Sprite对象本身,所以可以使用如下语法:spr.scale(...).pos(50, 100);</p>
* @param scaleX X轴缩放比例。
* @param scaleY Y轴缩放比例。
* @param speedMode (可选)是否极速模式,正常是调用this.scaleX=value进行赋值,极速模式直接调用内部函数处理,如果未重写scaleX,scaleY属性,建议设置为急速模式性能更高。
* @return 返回对象本身。
*/
scale(scaleX: number, scaleY: number, speedMode?: boolean): Sprite;
/**
* <p>设置倾斜角度。相当于分别设置skewX和skewY属性。</p>
* <p>因为返回值为Sprite对象本身,所以可以使用如下语法:spr.skew(...).pos(50, 100);</p>
* @param skewX 水平倾斜角度。
* @param skewY 垂直倾斜角度。
* @return 返回对象本身
*/
skew(skewX: number, skewY: number): Sprite;
/**
* 更新、呈现显示对象。由系统调用。
* @param context 渲染的上下文引用。
* @param x X轴坐标。
* @param y Y轴坐标。
*/
render(ctx: Context, x: number, y: number): void;
/**
* <p>绘制 当前<code>Sprite</code> 到 <code>Canvas</code> 上,并返回一个HtmlCanvas。</p>
* <p>绘制的结果可以当作图片源,再次绘制到其他Sprite里面,示例:</p>
*
* var htmlCanvas:HTMLCanvas = sprite.drawToCanvas(100, 100, 0, 0);//把精灵绘制到canvas上面
* var sp:Sprite = new Sprite();//创建精灵
* sp.graphics.drawTexture(htmlCanvas.getTexture());//把截图绘制到精灵上
* Laya.stage.addChild(sp);//把精灵显示到舞台
*
* <p>也可以获取原始图片数据,分享到网上,从而实现截图效果,示例:</p>
*
* var htmlCanvas:HTMLCanvas = sprite.drawToCanvas(100, 100, 0, 0);//把精灵绘制到canvas上面
* htmlCanvas.toBase64("image/png",0.9);//打印图片base64信息,可以发给服务器或者保存为图片
*
* @param canvasWidth 画布宽度。
* @param canvasHeight 画布高度。
* @param x 绘制的 X 轴偏移量。
* @param y 绘制的 Y 轴偏移量。
* @return HTMLCanvas 对象。
*/
drawToCanvas(canvasWidth: number, canvasHeight: number, offsetX: number, offsetY: number): HTMLCanvas;
/**
* 绘制到一个Texture对象
* @param canvasWidth
* @param canvasHeight
* @param offsetX
* @param offsetY
*/
drawToTexture(canvasWidth: number, canvasHeight: number, offsetX: number, offsetY: number, rt?: RenderTexture2D | null): Texture | RenderTexture2D;
/**
* 把当前对象渲染到指定的贴图上。贴图由外部指定,避免每次都创建。
* @param offx
* @param offy
* @param tex 输出渲染结果
*/
drawToTexture3D(offx: number, offy: number, tex: Texture2D): void;
/**
* @private
* 绘制到画布。
*/
static drawToCanvas(sprite: Sprite, _renderType: number, canvasWidth: number, canvasHeight: number, offsetX: number, offsetY: number): HTMLCanvas;
static drawtocanvCtx: Context;
/**
* @private
*
*/
static drawToTexture(sprite: Sprite, _renderType: number, canvasWidth: number, canvasHeight: number, offsetX: number, offsetY: number, rt?: RenderTexture2D | null): Texture | RenderTexture2D;
/**
* <p>自定义更新、呈现显示对象。一般用来扩展渲染模式,请合理使用,可能会导致在加速器上无法渲染。</p>
* <p><b>注意</b>不要在此函数内增加或删除树节点,否则会对树节点遍历造成影响。</p>
* @param context 渲染的上下文引用。
* @param x X轴坐标。
* @param y Y轴坐标。
*/
customRender(context: Context, x: number, y: number): void;
/**滤镜集合。可以设置多个滤镜组合。*/
get filters(): any[];
set filters(value: any[]);
/**
* 把本地坐标转换为相对stage的全局坐标。
* @param point 本地坐标点。
* @param createNewPoint (可选)是否创建一个新的Point对象作为返回值,默认为false,使用输入的point对象返回,减少对象创建开销。
* @param globalNode global节点,默认为Laya.stage
* @return 转换后的坐标的点。
*/
localToGlobal(point: Point, createNewPoint?: boolean, globalNode?: Sprite | null): Point;
/**
* 把stage的全局坐标转换为本地坐标。
* @param point 全局坐标点。
* @param createNewPoint (可选)是否创建一个新的Point对象作为返回值,默认为false,使用输入的point对象返回,减少对象创建开销。
* @param globalNode global节点,默认为Laya.stage
* @return 转换后的坐标的点。
*/
globalToLocal(point: Point, createNewPoint?: boolean, globalNode?: Sprite | null): Point;
/**
* 将本地坐标系坐标转转换到父容器坐标系。
* @param point 本地坐标点。
* @return 转换后的点。
*/
toParentPoint(point: Point): Point;
/**
* 将父容器坐标系坐标转换到本地坐标系。
* @param point 父容器坐标点。
* @return 转换后的点。
*/
fromParentPoint(point: Point): Point;
/**
* 将Stage坐标系坐标转换到本地坐标系。
* @param point 父容器坐标点。
* @return 转换后的点。
*/
fromStagePoint(point: Point): Point;
/**
* <p>增加事件侦听器,以使侦听器能够接收事件通知。</p>
* <p>如果侦听鼠标事件,则会自动设置自己和父亲节点的属性 mouseEnabled 的值为 true(如果父节点mouseEnabled=false,则停止设置父节点mouseEnabled属性)。</p>
* @param type 事件的类型。
* @param caller 事件侦听函数的执行域。
* @param listener 事件侦听函数。
* @param args (可选)事件侦听函数的回调参数。
* @return 此 EventDispatcher 对象。
* @override
*/
on(type: string, caller: any, listener: Function, args?: any[]): EventDispatcher;
/**
* <p>增加事件侦听器,以使侦听器能够接收事件通知,此侦听事件响应一次后则自动移除侦听。</p>
* <p>如果侦听鼠标事件,则会自动设置自己和父亲节点的属性 mouseEnabled 的值为 true(如果父节点mouseEnabled=false,则停止设置父节点mouseEnabled属性)。</p>
* @param type 事件的类型。
* @param caller 事件侦听函数的执行域。
* @param listener 事件侦听函数。
* @param args (可选)事件侦听函数的回调参数。
* @return 此 EventDispatcher 对象。
* @override
*/
once(type: string, caller: any, listener: Function, args?: any[]): EventDispatcher;
/** @private */
protected _onDisplay(v?: boolean): void;
/**@private
* @override
*/
protected _setParent(value: Node): void;
/**
* <p>加载并显示一个图片。相当于加载图片后,设置texture属性</p>
* <p>注意:2.0改动:多次调用,只会显示一个图片(1.0会显示多个图片),x,y,width,height参数取消。</p>
* @param url 图片地址。
* @param complete (可选)加载完成回调。
* @return 返回精灵对象本身。
*/
loadImage(url: string, complete?: Handler): Sprite;
/**
* 根据图片地址创建一个新的 <code>Sprite</code> 对象用于加载并显示此图片。
* @param url 图片地址。
* @return 返回新的 <code>Sprite</code> 对象。
*/
static fromImage(url: string): Sprite;
/**cacheAs后,设置自己和父对象缓存失效。*/
repaint(type?: number): void;
/**@private
* @override
*/
protected _childChanged(child?: Node): void;
/**cacheAs时,设置所有父对象缓存失效。 */
parentRepaint(type?: number): void;
/**对舞台 <code>stage</code> 的引用。*/
get stage(): Stage;
/**
* <p>可以设置一个Rectangle区域作为点击区域,或者设置一个<code>HitArea</code>实例作为点击区域,HitArea内可以设置可点击和不可点击区域。</p>
* <p>如果不设置hitArea,则根据宽高形成的区域进行碰撞。</p>
*/
get hitArea(): any;
set hitArea(value: any);
/**
* <p>遮罩,可以设置一个对象(支持位图和矢量图),根据对象形状进行遮罩显示。</p>
* <p>【注意】遮罩对象坐标系是相对遮罩对象本身的,和Flash机制不同</p>
*/
get mask(): Sprite;
set mask(value: Sprite);
/**
* 是否接受鼠标事件。
* 默认为false,如果监听鼠标事件,则会自动设置本对象及父节点的属性 mouseEnable 的值都为 true(如果父节点手动设置为false,则不会更改)。
* */
get mouseEnabled(): boolean;
set mouseEnabled(value: boolean);
/**
* 开始拖动此对象。
* @param area (可选)拖动区域,此区域为当前对象注册点活动区域(不包括对象宽高),可选。
* @param hasInertia (可选)鼠标松开后,是否还惯性滑动,默认为false,可选。
* @param elasticDistance (可选)橡皮筋效果的距离值,0为无橡皮筋效果,默认为0,可选。
* @param elasticBackTime (可选)橡皮筋回弹时间,单位为毫秒,默认为300毫秒,可选。
* @param data (可选)拖动事件携带的数据,可选。
* @param disableMouseEvent (可选)禁用其他对象的鼠标检测,默认为false,设置为true能提高性能。
* @param ratio (可选)惯性阻尼系数,影响惯性力度和时长。
*/
startDrag(area?: Rectangle, hasInertia?: boolean, elasticDistance?: number, elasticBackTime?: number, data?: any, disableMouseEvent?: boolean, ratio?: number): void;
/**停止拖动此对象。*/
stopDrag(): void;
/**
* 检测某个点是否在此对象内。
* @param x 全局x坐标。
* @param y 全局y坐标。
* @return 表示是否在对象内。
*/
hitTestPoint(x: number, y: number): boolean;
/**获得相对于本对象上的鼠标坐标信息。*/
getMousePoint(): Point;
/**
* 获得相对于stage的全局X轴缩放值(会叠加父亲节点的缩放值)。
*/
get globalScaleX(): number;
/**
* 获得相对于stage的全局旋转值(会叠加父亲节点的旋转值)。
*/
get globalRotation(): number;
/**
* 获得相对于stage的全局Y轴缩放值(会叠加父亲节点的缩放值)。
*/
get globalScaleY(): number;
/**
* 返回鼠标在此对象坐标系上的 X 轴坐标信息。
*/
get mouseX(): number;
/**
* 返回鼠标在此对象坐标系上的 Y 轴坐标信息。
*/
get mouseY(): number;
/**z排序,更改此值,则会按照值的大小对同一容器的所有对象重新排序。值越大,越靠上。默认为0,则根据添加顺序排序。*/
get zOrder(): number;
set zOrder(value: number);
/**
* 设置一个Texture实例,并显示此图片(如果之前有其他绘制,则会被清除掉)。
* 等同于graphics.clear();graphics.drawImage(),但性能更高
* 还可以赋值一个图片地址,则会自动加载图片,然后显示
*/
get texture(): Texture;
set texture(value: Texture);
/**
* <p>视口大小,视口外的子对象,将不被渲染(如果想实现裁剪效果,请使用srollRect),合理使用能提高渲染性能。比如由一个个小图片拼成的地图块,viewport外面的小图片将不渲染</p>
* <p>srollRect和viewport的区别:<br/>
* 1. srollRect自带裁剪效果,viewport只影响子对象渲染是否渲染,不具有裁剪效果(性能更高)。<br/>
* 2. 设置rect的x,y属性均能实现区域滚动效果,但scrollRect会保持0,0点位置不变。</p>
* @default null
*/
get viewport(): Rectangle;
set viewport(value: Rectangle);
/**@private */
captureMouseEvent(exclusive: boolean): void;
/**@private */
releaseMouseEvent(): void;
set drawCallOptimize(value: boolean);
get drawCallOptimize(): boolean;
}