|
@@ -207,7 +207,7 @@ export class SGraphItem extends SObject {
|
|
|
* 构造函数
|
|
|
*
|
|
|
* @param parent 指向父对象
|
|
|
- */
|
|
|
+ */
|
|
|
constructor(parent: SGraphItem | null = null) {
|
|
|
super();
|
|
|
if (parent) {
|
|
@@ -220,7 +220,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param painter 绘制对象
|
|
|
* @param rect 绘制区域
|
|
|
- */
|
|
|
+ */
|
|
|
onPaint(painter: SPainter, rect: SRect): void {
|
|
|
this.onDraw(painter);
|
|
|
for (let item of this.children) {
|
|
@@ -263,26 +263,26 @@ export class SGraphItem extends SObject {
|
|
|
* Item 绘制操作
|
|
|
*
|
|
|
* @param painter 绘制对象
|
|
|
- */
|
|
|
+ */
|
|
|
onDraw(painter: SPainter): void {} // Function onDraw()
|
|
|
|
|
|
/**
|
|
|
* 隐藏对象
|
|
|
- */
|
|
|
+ */
|
|
|
hide(): void {
|
|
|
this.visible = false;
|
|
|
} // Function hide()
|
|
|
|
|
|
/**
|
|
|
* 显示对象
|
|
|
- */
|
|
|
+ */
|
|
|
show(): void {
|
|
|
this.visible = true;
|
|
|
} // Function show()
|
|
|
|
|
|
/**
|
|
|
* 更新 Item
|
|
|
- */
|
|
|
+ */
|
|
|
update(): void {
|
|
|
if (null != this.scene) {
|
|
|
const view = this.scene.view;
|
|
@@ -296,7 +296,7 @@ export class SGraphItem extends SObject {
|
|
|
* Item 对象边界区域
|
|
|
*
|
|
|
* @return 对象边界区域
|
|
|
- */
|
|
|
+ */
|
|
|
boundingRect(): SRect {
|
|
|
return new SRect(0, 0, 10, 10);
|
|
|
} // Function boundingRect()
|
|
@@ -306,7 +306,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param x 新位置的 x 坐标
|
|
|
* @param y 新位置的 y 坐标
|
|
|
- */
|
|
|
+ */
|
|
|
moveTo(x: number, y: number): void {
|
|
|
this.x = x;
|
|
|
this.y = y;
|
|
@@ -318,7 +318,7 @@ export class SGraphItem extends SObject {
|
|
|
* @param x 横坐标(当前 item)
|
|
|
* @param y 纵坐标(当前 item)
|
|
|
* @return item 是否包含点 x, y
|
|
|
- */
|
|
|
+ */
|
|
|
contains(x: number, y: number): boolean {
|
|
|
return this.boundingRect().contains(x, y);
|
|
|
} // Function contains()
|
|
@@ -327,7 +327,7 @@ export class SGraphItem extends SObject {
|
|
|
* 获得 item 的路径节点列表。(该节点被加载到场景中,如果未被加载到场景中,计算会出错)
|
|
|
*
|
|
|
* @return item 的路径节点列表
|
|
|
- */
|
|
|
+ */
|
|
|
itemPath(): SGraphItem[] {
|
|
|
if (this.parent != null) {
|
|
|
let list = this.parent.itemPath();
|
|
@@ -344,7 +344,7 @@ export class SGraphItem extends SObject {
|
|
|
* @param x 场景中的横坐标
|
|
|
* @param y 场景中的纵坐标
|
|
|
* @return 在 item 中的坐标
|
|
|
- */
|
|
|
+ */
|
|
|
mapFromScene(x: number, y: number): SPoint {
|
|
|
const m = this.scene2itemMattrix();
|
|
|
return new SPoint(x, y).matrixTransform(m.inversed());
|
|
@@ -356,7 +356,7 @@ export class SGraphItem extends SObject {
|
|
|
* @param x item 中的横坐标
|
|
|
* @param y item 中的纵坐标
|
|
|
* @return 在场景中的坐标
|
|
|
- */
|
|
|
+ */
|
|
|
mapToScene(x: number, y: number): SPoint {
|
|
|
if (this.parent == null) {
|
|
|
return new SPoint(x, y);
|
|
@@ -371,7 +371,7 @@ export class SGraphItem extends SObject {
|
|
|
* 场景对象到 item 对象的转换矩阵
|
|
|
*
|
|
|
* @return 转换矩阵
|
|
|
- */
|
|
|
+ */
|
|
|
scene2itemMattrix(): SMatrix {
|
|
|
let m = new SMatrix();
|
|
|
let list = this.itemPath();
|
|
@@ -396,7 +396,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 保存事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
onClick(event: SMouseEvent): boolean {
|
|
|
for (let i = this.children.length - 1; i >= 0; i--) {
|
|
|
let item = this.children[i];
|
|
@@ -418,7 +418,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 保存事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
onDoubleClick(event: SMouseEvent): boolean {
|
|
|
for (let i = this.children.length - 1; i >= 0; i--) {
|
|
|
let item = this.children[i];
|
|
@@ -440,7 +440,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 保存事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
onMouseDown(event: SMouseEvent): boolean {
|
|
|
for (let i = this.children.length - 1; i >= 0; i--) {
|
|
|
try {
|
|
@@ -475,7 +475,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 保存事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
onMouseMove(event: SMouseEvent): boolean {
|
|
|
for (let i = this.children.length - 1; i >= 0; i--) {
|
|
|
let item = this.children[i];
|
|
@@ -525,7 +525,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 保存事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
onMouseUp(event: SMouseEvent): boolean {
|
|
|
for (let i = this.children.length - 1; i >= 0; i--) {
|
|
|
let item = this.children[i];
|
|
@@ -559,7 +559,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 保存事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
onMouseEnter(event: SMouseEvent): boolean {
|
|
|
return false;
|
|
|
} // Function onMouseEnter()
|
|
@@ -569,7 +569,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 保存事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
onMouseLeave(event: SMouseEvent): boolean {
|
|
|
return false;
|
|
|
} // Function onMouseLeave()
|
|
@@ -579,7 +579,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
onContextMenu(event: SMouseEvent): boolean {
|
|
|
for (let i = this.children.length - 1; i >= 0; i--) {
|
|
|
let item = this.children[i];
|
|
@@ -599,33 +599,33 @@ export class SGraphItem extends SObject {
|
|
|
* 按键按下事件
|
|
|
*
|
|
|
* @param event 事件参数
|
|
|
- */
|
|
|
+ */
|
|
|
onKeyDown(event: KeyboardEvent): void {} // Function onKeyDown()
|
|
|
|
|
|
/**
|
|
|
* 按键 press 事件
|
|
|
*
|
|
|
* @param event 事件参数
|
|
|
- */
|
|
|
+ */
|
|
|
onKeyPress(event: KeyboardEvent): void {} // Function onKeyPress()
|
|
|
|
|
|
/**
|
|
|
* 按键松开事件
|
|
|
*
|
|
|
* @param event 事件参数
|
|
|
- */
|
|
|
+ */
|
|
|
onKeyUp(event: KeyboardEvent): void {} // Function onKeyUp()
|
|
|
|
|
|
/**
|
|
|
* 取消操作 item 事件
|
|
|
- */
|
|
|
+ */
|
|
|
cancelOperate(): void {} // Function cancelOperate()
|
|
|
|
|
|
/**
|
|
|
* 返回 item 对应的数据对象
|
|
|
*
|
|
|
* @return item 数据
|
|
|
- */
|
|
|
+ */
|
|
|
toData(): any | null {
|
|
|
return null;
|
|
|
} // Function toData()
|
|
@@ -635,10 +635,10 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param x x 坐标
|
|
|
* @param y y 坐标
|
|
|
- */
|
|
|
+ */
|
|
|
moveToOrigin(x: number, y: number): void {
|
|
|
if (this.children && this.children.length) {
|
|
|
- this.children.forEach(it => {
|
|
|
+ this.children.forEach((it): void => {
|
|
|
it.moveToOrigin(x, y);
|
|
|
});
|
|
|
}
|
|
@@ -652,7 +652,7 @@ export class SGraphItem extends SObject {
|
|
|
* @param a 比较元素 1
|
|
|
* @param b 比较元素 2
|
|
|
* @return 2 个元素 zOrder 的差值
|
|
|
- */
|
|
|
+ */
|
|
|
private static sortItemZOrder(a: SGraphItem, b: SGraphItem): number {
|
|
|
return a.zOrder - b.zOrder;
|
|
|
} // Function sortItemZOrder()
|
|
@@ -663,7 +663,7 @@ export class SGraphItem extends SObject {
|
|
|
* @param child 子对象
|
|
|
* @param event 事件参数
|
|
|
* @return 子对象鼠标事件
|
|
|
- */
|
|
|
+ */
|
|
|
private static toChildMouseEvent(
|
|
|
child: SGraphItem,
|
|
|
event: SMouseEvent
|
|
@@ -691,7 +691,7 @@ export class SGraphItem extends SObject {
|
|
|
* 锁定 item
|
|
|
*
|
|
|
* @param item 被锁定的 item
|
|
|
- */
|
|
|
+ */
|
|
|
protected grabItem(item: SGraphItem): void {
|
|
|
if (this.scene != null) {
|
|
|
this.scene.grabItem = item;
|
|
@@ -700,7 +700,7 @@ export class SGraphItem extends SObject {
|
|
|
|
|
|
/**
|
|
|
* 释放被锁定的 item
|
|
|
- */
|
|
|
+ */
|
|
|
protected releaseItem(): void {
|
|
|
if (this.scene != null) {
|
|
|
this.scene.grabItem = null;
|
|
@@ -713,7 +713,7 @@ export class SGraphItem extends SObject {
|
|
|
* @param x X 轴
|
|
|
* @param y Y 轴
|
|
|
* @return 在父节点的位置
|
|
|
- */
|
|
|
+ */
|
|
|
protected toParentChange(x: number, y: number): SPoint {
|
|
|
const m = new SMatrix();
|
|
|
m.scale(this.scale, this.scale);
|
|
@@ -730,7 +730,7 @@ export class SGraphItem extends SObject {
|
|
|
* 判断是否处理事件
|
|
|
*
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
private acceptEvent(): boolean {
|
|
|
return this.visible && this.enabled;
|
|
|
} // Function acceptEvent()
|
|
@@ -740,7 +740,7 @@ export class SGraphItem extends SObject {
|
|
|
*
|
|
|
* @param event 事件参数
|
|
|
* @return 是否处理事件
|
|
|
- */
|
|
|
+ */
|
|
|
private clickSelect(event: SMouseEvent): boolean {
|
|
|
// 如果 Item 不可被选中,或没有按下鼠标左键,则直接返回
|
|
|
if (!this.selectable) {
|