82 lines
2.9 KiB
82 lines
2.9 KiB
import { Constructor } from '@angular/material/core/common-behaviors/constructor'; |
|
import * as PIXI from 'pixi.js'; |
|
import { Point, Rectangle, Graphics, Container } from 'pixi.js'; |
|
import { WorkingAreaComponent } from '../working-area.component'; |
|
|
|
/** |
|
* 安信形状 |
|
*/ |
|
export class AxShape extends Container { |
|
assetData: any; |
|
workingArea: WorkingAreaComponent; |
|
// 可以被移动的 |
|
moveable = true; |
|
// 可以被选中的 |
|
selectable = true; |
|
// 是否显示名称 |
|
showName = true; |
|
|
|
constructor(assetData: any, workingArea: WorkingAreaComponent) { |
|
super(); |
|
this.assetData = assetData; |
|
this.workingArea = workingArea; |
|
this.workingArea.backgroundImage.addChild(this); |
|
this.interactive = true; |
|
this.buttonMode = true; |
|
this.on('mousedown', event => { |
|
console.log(this.assetData); |
|
event.stopPropagation(); |
|
if (this.selectable) { |
|
this.workingArea.selection.selectOne(this); |
|
} |
|
if (this.moveable) { |
|
event.currentTarget.data = event.data; |
|
event.currentTarget.alpha = 0.5; |
|
event.currentTarget.dragging = true; |
|
|
|
event.currentTarget.dragPoint = event.data.getLocalPosition(event.currentTarget.parent); |
|
event.currentTarget.dragPoint.x -= event.currentTarget.x; |
|
event.currentTarget.dragPoint.y -= event.currentTarget.y; |
|
} |
|
}) |
|
.on('mouseup', event => { |
|
if (event.currentTarget.dragging) { |
|
event.currentTarget.alpha = 1; |
|
event.currentTarget.dragging = false; |
|
event.currentTarget.data = null; |
|
} |
|
}) |
|
.on('mouseupoutside', event => { |
|
if (event.currentTarget.dragging) { |
|
event.currentTarget.alpha = 1; |
|
event.currentTarget.dragging = false; |
|
event.currentTarget.data = null; |
|
} |
|
}) |
|
.on('mousemove', event => { |
|
if (event.currentTarget.dragging) { |
|
const newPosition = event.currentTarget.data.getLocalPosition(event.currentTarget.parent); |
|
event.currentTarget.x = newPosition.x - event.currentTarget.dragPoint.x; |
|
event.currentTarget.y = newPosition.y - event.currentTarget.dragPoint.y; |
|
this.assetData.Point = new PIXI.Point(this.x, this.y); |
|
this.workingArea.canvasData.isChange = true; |
|
} |
|
}) |
|
.on('rightclick', event => { |
|
|
|
}) |
|
.on('mouseover', event => { |
|
event.stopPropagation(); |
|
}) |
|
.on('mouseout', event => { |
|
event.stopPropagation(); |
|
}); |
|
} |
|
redraw(): void { |
|
|
|
} |
|
|
|
refresh(): void{ |
|
|
|
} |
|
}
|
|
|