Skip to content

@jtopo/core / Camera

Class: Camera

相机对象,更直观简单的方式控制画面的显示、缩放。

js
let camera = stage.camera;

// 看向某个坐标 (世界坐标系) , 该坐标将移到画布中心
camera.lookAt(100, 100);

// 看向指定对象或者一组对象的中心, 该点将被置于画布中心
camera.lookAtObject(node);

// 聚焦在指定对象(及子节点)上,其他对象不可见
camera.lookOnly(node);

// 缩放到指定系数
camera.zoom(2);

// 缩放最大极限, 默认:10 (最大能放大10倍)
camera.zoomInLimit = 2;

// 缩放最小极限,默认:0.1 (最小能缩放到原来的十分之一)
camera.zoomOutLimit = 0.5;

// 缩放最大极限, 默认:10 (最大能放大10倍)
camera.zoomInLimit = 2;

Since

2.5.0

Hierarchy

Table of contents

Constructors

Properties

Accessors

Methods

Constructors

constructor

new Camera(stage)

Parameters

NameType
stageStage

Overrides

EventTarget.constructor

Properties

enableWheelZoom

enableWheelZoom: boolean = true

是否允许滚轮缩放


lookAtX

Readonly lookAtX: number = 0

当前看向的x坐标


lookAtY

Readonly lookAtY: number = 0

当前看向的y坐标


zoomInFactor

zoomInFactor: number = 1.25

放大系数, 默认1.25


zoomInLimit

zoomInLimit: number = 10

缩放最大极限, 默认:10 (最大能放大10倍)

//例如:限制最大能缩放2倍
camera.zoomInLimit = 2;

zoomOutFactor

zoomOutFactor: number = 0.8

缩小系数, 默认0.8


zoomOutLimit

zoomOutLimit: number = 0.1

缩放最小极限,默认:0.1 (最小能缩放到原来的十分之一)

//例如:限制最小能缩放到原来的一半
camera.zoomOutLimit = 0.5;

Accessors

offsetX

get offsetX(): number

Returns

number

set offsetX(v): void

Parameters

NameType
vnumber

Returns

void


offsetY

get offsetY(): number

Returns

number

set offsetY(v): void

Parameters

NameType
vnumber

Returns

void


scale

get scale(): number

Returns

number

set scale(v): void

Parameters

NameType
vnumber

Returns

void

Methods

addEventListener

addEventListener(type, callback): void

增加事件监听

Parameters

NameTypeDescription
type"zoom"事件类型
callback(e: CameraEvent) => void

Returns

void

Overrides

EventTarget.addEventListener


canSee

canSee(obj): boolean

对象是否对相机可见

Parameters

NameType
objNE

Returns

boolean


clearDirty

clearDirty(): void

Returns

void


dispatchEvent

dispatchEvent(event): void

分发事件

Parameters

NameType
eventEvent | EventBase

Returns

void

Inherited from

EventTarget.dispatchEvent


exclude

exclude(obj): void

排除某个图元, 该图元对于相机不可见

Parameters

NameType
objNE

Returns

void


getObjectScreenTransform

getObjectScreenTransform(obj): Transform

Parameters

NameType
objNE

Returns

Transform


getScreenTransform

getScreenTransform(): Transform

Returns

Transform


getShowOnlyObject

getShowOnlyObject(): NE

获取聚焦的对象

Returns

NE


getTransform

getTransform(): Transform

Returns

Transform


hasListener

hasListener(type): boolean

是否有该类型的监听

Parameters

NameType
type"zoom"

Returns

boolean

Overrides

EventTarget.hasListener


include

include(obj): void

恢复某个图元, 该图元对于相机可见

Parameters

NameType
objNE

Returns

void


isDirty

isDirty(): boolean

Returns

boolean


lock

lock(): void

锁定相机 (一直保持当前位置和缩放,不再响应滚轮缩放、和拖拽移动)

Returns

void


lookAt

lookAt(x, y): void

看向某个坐标 (世界坐标系) , 该坐标将移到画布中心

Parameters

NameType
xnumber
ynumber

Returns

void


lookAtContentCenter

lookAtContentCenter(): void

‘看向’所有图元的中心(所有图元的中心置于画布中心)

Returns

void


lookAtObject

lookAtObject(obj): void

"看向"指定对象或者一组对象的中心(置于画布中心)

Parameters

NameType
objNE | NE[]

Returns

void


lookOnly

lookOnly(object): void

聚焦在指定对象(及子节点)上,其他对象不可见

Parameters

NameTypeDescription
objectNE再次聚焦或者为null时会切换或取消聚焦

Returns

void


markDirty

markDirty(): void

Returns

void


removeEventListener

removeEventListener(type, callback): void

移除一个事件监听

Parameters

NameType
type"zoom"
callback(e: CameraEvent) => void

Returns

void

Overrides

EventTarget.removeEventListener


toScreenRect

toScreenRect(rect): Rectangle

将世界坐标系下的矩形,变换到屏幕坐标系

Parameters

NameType
rectRectangle

Returns

Rectangle


toScreenXY

toScreenXY(x, y): Object

世界坐标,转成屏幕坐标

Parameters

NameType
xnumber
ynumber

Returns

Object

NameType
xnumber
ynumber

toWorldRect

toWorldRect(rect): Rectangle

屏幕坐标下的矩形,变换到Layer坐标系

Parameters

NameType
rectRectangle

Returns

Rectangle


toWorldXY

toWorldXY(x, y): Object

屏幕坐标,转成世界坐标

Parameters

NameType
xnumber
ynumber

Returns

Object

NameType
xnumber
ynumber

unlock

unlock(): void

解锁相机

Returns

void


zoom

zoom(s): void

缩放到指定系数

Parameters

NameTypeDescription
snumber缩放系数

Returns

void


zoomBy

zoomBy(s, cx?, cy?): void

指定坐标为中心,进行缩放

会抛出zoom事件, 可捕获,如:

```js camera.on('zoom', (event)=>{ event.preventDefault(); // 阻止缩放 }) ```

Parameters

NameTypeDescription
snumber缩放系数
cx?number缩放中心的x坐标 (世界坐标)
cy?number缩放中心的y坐标 (世界坐标)

Returns

void


zoomIn

zoomIn(): void

放大(镜头推进)

Returns

void


zoomOut

zoomOut(): void

缩小(镜头拉远)

Returns

void


zoomToFit

zoomToFit(opt?): void

缩放到画布1:1并居中

Parameters

NameType
optObject
opt.padding?number

Returns

void