lyb-pixi-js 1.3.10 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/Utils/LibPixiGlobalUpdater.d.ts +15 -0
- package/Utils/LibPixiGlobalUpdater.js +21 -0
- package/Utils/LibPixiPolygonDrawTool.d.ts +30 -0
- package/Utils/LibPixiPolygonDrawTool.js +109 -0
- package/libPixiJs.d.ts +7 -2
- package/libPixiJs.js +7 -2
- package/lyb-pixi.js +29 -29
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -144,6 +144,8 @@ app.stage.addChild(box);
|
|
|
144
144
|
|
|
145
145
|
\- [LibGlobalUpdater-事件实例汇总](#LibGlobalUpdater-事件实例汇总)
|
|
146
146
|
|
|
147
|
+
\- [LibPixiPolygonDrawTool-多边形绘制](#LibPixiPolygonDrawTool-多边形绘制)
|
|
148
|
+
|
|
147
149
|
## Base-基础
|
|
148
150
|
|
|
149
151
|
### LibPixiText-文本
|
|
@@ -791,3 +793,11 @@ $bus.on("play", () => {
|
|
|
791
793
|
});
|
|
792
794
|
```
|
|
793
795
|
|
|
796
|
+
### LibPixiPolygonDrawTool-多边形绘制
|
|
797
|
+
|
|
798
|
+
> 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制
|
|
799
|
+
|
|
800
|
+
```ts
|
|
801
|
+
new LibPixiPolygonDrawTool(app)
|
|
802
|
+
```
|
|
803
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Container } from "pixi.js";
|
|
2
|
+
/** @description 事件总线更新实例汇总 */
|
|
3
|
+
export declare class LibPixiGlobalUpdater<Instances> {
|
|
4
|
+
/** 实例列表 */
|
|
5
|
+
private instances;
|
|
6
|
+
/** @description 存储实例
|
|
7
|
+
* @param key 实例key
|
|
8
|
+
* @param instance 实例
|
|
9
|
+
*/
|
|
10
|
+
setInstance(key: Instances, instance: Container): void;
|
|
11
|
+
/** @description 获取实例
|
|
12
|
+
* @param key 实例key
|
|
13
|
+
*/
|
|
14
|
+
getInstance<T>(key: Instances): T;
|
|
15
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** @description 事件总线更新实例汇总 */
|
|
2
|
+
export class LibPixiGlobalUpdater {
|
|
3
|
+
constructor() {
|
|
4
|
+
/** 实例列表 */
|
|
5
|
+
this.instances = new Map();
|
|
6
|
+
}
|
|
7
|
+
/** @description 存储实例
|
|
8
|
+
* @param key 实例key
|
|
9
|
+
* @param instance 实例
|
|
10
|
+
*/
|
|
11
|
+
setInstance(key, instance) {
|
|
12
|
+
this.instances.has(key) && this.instances.delete(key);
|
|
13
|
+
this.instances.set(key, instance);
|
|
14
|
+
}
|
|
15
|
+
/** @description 获取实例
|
|
16
|
+
* @param key 实例key
|
|
17
|
+
*/
|
|
18
|
+
getInstance(key) {
|
|
19
|
+
return this.instances.get(key);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Application } from "pixi.js";
|
|
2
|
+
/** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制
|
|
3
|
+
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
|
|
4
|
+
*/
|
|
5
|
+
export declare class LibPixiPolygonDrawTool {
|
|
6
|
+
/** App */
|
|
7
|
+
private _app;
|
|
8
|
+
/** 多边形 */
|
|
9
|
+
private _polygon;
|
|
10
|
+
/** 是否正在绘制 */
|
|
11
|
+
private _drawing;
|
|
12
|
+
/** 储点的数组 */
|
|
13
|
+
private _points;
|
|
14
|
+
/** 起始点 */
|
|
15
|
+
private _startPoint;
|
|
16
|
+
/** 实际绘制的点 */
|
|
17
|
+
private _realPoints;
|
|
18
|
+
/** 点元素 */
|
|
19
|
+
private _pointElements;
|
|
20
|
+
constructor(app: Application);
|
|
21
|
+
private _setupListeners;
|
|
22
|
+
/** @description 控制绘制开始和结束 */
|
|
23
|
+
private toggleDrawing;
|
|
24
|
+
/** @description 添加点坐标 */
|
|
25
|
+
private _addPoint;
|
|
26
|
+
/** @description 绘制多边形 */
|
|
27
|
+
private _drawPolygon;
|
|
28
|
+
/** @description 绘制一个点 */
|
|
29
|
+
private _drawDot;
|
|
30
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Graphics, } from "pixi.js";
|
|
2
|
+
/** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制
|
|
3
|
+
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
|
|
4
|
+
*/
|
|
5
|
+
export class LibPixiPolygonDrawTool {
|
|
6
|
+
constructor(app) {
|
|
7
|
+
/** 是否正在绘制 */
|
|
8
|
+
this._drawing = false;
|
|
9
|
+
/** 储点的数组 */
|
|
10
|
+
this._points = [];
|
|
11
|
+
/** 起始点 */
|
|
12
|
+
this._startPoint = [];
|
|
13
|
+
/** 实际绘制的点 */
|
|
14
|
+
this._realPoints = [];
|
|
15
|
+
/** 点元素 */
|
|
16
|
+
this._pointElements = [];
|
|
17
|
+
this._app = app;
|
|
18
|
+
this._app.stage.sortableChildren = true;
|
|
19
|
+
this._polygon = new Graphics();
|
|
20
|
+
this._app.stage.addChild(this._polygon);
|
|
21
|
+
this._polygon.zIndex = 999999;
|
|
22
|
+
this._setupListeners();
|
|
23
|
+
}
|
|
24
|
+
_setupListeners() {
|
|
25
|
+
// 监听键盘空格键按下事件
|
|
26
|
+
window.addEventListener("keydown", (event) => {
|
|
27
|
+
if (event.code === "Space") {
|
|
28
|
+
this.toggleDrawing();
|
|
29
|
+
}
|
|
30
|
+
else if (event.code === "Backspace") {
|
|
31
|
+
this._points.pop();
|
|
32
|
+
this._realPoints.pop();
|
|
33
|
+
this._drawPolygon();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
// 监听鼠标点击事件
|
|
37
|
+
this._app.stage.eventMode = "static";
|
|
38
|
+
this._app.stage.on("pointerdown", (event) => {
|
|
39
|
+
if (this._drawing) {
|
|
40
|
+
this._addPoint(event);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** @description 控制绘制开始和结束 */
|
|
45
|
+
toggleDrawing() {
|
|
46
|
+
if (this._drawing) {
|
|
47
|
+
console.warn("绘制结束");
|
|
48
|
+
this._points.push({ x: 0, y: 0 });
|
|
49
|
+
console.log(this._points.flat());
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.warn("开始绘制");
|
|
53
|
+
this._startPoint = [];
|
|
54
|
+
this._points = [];
|
|
55
|
+
this._realPoints = [];
|
|
56
|
+
this._polygon.clear();
|
|
57
|
+
this._pointElements.forEach((item) => item.destroy());
|
|
58
|
+
this._pointElements = [];
|
|
59
|
+
}
|
|
60
|
+
this._drawing = !this._drawing;
|
|
61
|
+
}
|
|
62
|
+
/** @description 添加点坐标 */
|
|
63
|
+
_addPoint(event) {
|
|
64
|
+
const x = Number(event.clientX.toFixed(0));
|
|
65
|
+
const y = Number(event.clientY.toFixed(0));
|
|
66
|
+
this._realPoints.push({ x, y });
|
|
67
|
+
// 如果是第一个点,记录为原点(0, 0)
|
|
68
|
+
if (this._startPoint.length === 0) {
|
|
69
|
+
this._startPoint = [{ x, y }];
|
|
70
|
+
this._points.push({ x: 0, y: 0 });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// 计算相对于第一个点的偏移
|
|
74
|
+
const offsetX = x - this._startPoint[0].x;
|
|
75
|
+
const offsetY = y - this._startPoint[0].y;
|
|
76
|
+
// 将相对坐标添加到数组
|
|
77
|
+
this._points.push({
|
|
78
|
+
x: Number(offsetX.toFixed(0)),
|
|
79
|
+
y: Number(offsetY.toFixed(0)),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
this._drawPolygon();
|
|
83
|
+
}
|
|
84
|
+
/** @description 绘制多边形 */
|
|
85
|
+
_drawPolygon() {
|
|
86
|
+
this._polygon.clear();
|
|
87
|
+
this._polygon.beginFill(0x66ccff);
|
|
88
|
+
this._polygon.drawPolygon(this._realPoints);
|
|
89
|
+
this._polygon.endFill();
|
|
90
|
+
this._polygon.alpha = 0.5;
|
|
91
|
+
//渲染点
|
|
92
|
+
this._pointElements.forEach((point) => point.destroy());
|
|
93
|
+
this._pointElements = [];
|
|
94
|
+
this._realPoints.forEach((point) => {
|
|
95
|
+
this._pointElements.push(this._drawDot(point.x, point.y));
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/** @description 绘制一个点 */
|
|
99
|
+
_drawDot(x, y) {
|
|
100
|
+
const pointElement = new Graphics();
|
|
101
|
+
pointElement.beginFill(0xff0000);
|
|
102
|
+
pointElement.drawCircle(x, y, 5);
|
|
103
|
+
pointElement.endFill();
|
|
104
|
+
pointElement.alpha = 0.5;
|
|
105
|
+
this._app.stage.addChild(pointElement);
|
|
106
|
+
pointElement.zIndex = 999999;
|
|
107
|
+
return pointElement;
|
|
108
|
+
}
|
|
109
|
+
}
|
package/libPixiJs.d.ts
CHANGED
|
@@ -16,7 +16,8 @@ import { LibPixiSubAddMinMax } from "./Components/Custom/LibPixiSubAddMinMax";
|
|
|
16
16
|
import { LibPixiTable } from "./Components/Custom/LibPixiTable";
|
|
17
17
|
import { LibPixiAudio } from "./Utils/LibPixiAudio";
|
|
18
18
|
import { LibPixiSlideInput } from "./Utils/LibPixiSlideInput";
|
|
19
|
-
import {
|
|
19
|
+
import { LibPixiGlobalUpdater } from "./Utils/LibPixiGlobalUpdater";
|
|
20
|
+
import { LibPixiPolygonDrawTool } from "./Utils/LibPixiPolygonDrawTool";
|
|
20
21
|
/** @description 组件 */
|
|
21
22
|
export declare const Components: {
|
|
22
23
|
Base: {
|
|
@@ -169,5 +170,9 @@ export declare const Utils: {
|
|
|
169
170
|
/** @description 事件总线更新实例汇总
|
|
170
171
|
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibGlobalUpdater-事件实例汇总
|
|
171
172
|
*/
|
|
172
|
-
|
|
173
|
+
LibPixiGlobalUpdater: typeof LibPixiGlobalUpdater;
|
|
174
|
+
/** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制
|
|
175
|
+
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
|
|
176
|
+
*/
|
|
177
|
+
LibPixiPolygonDrawTool: typeof LibPixiPolygonDrawTool;
|
|
173
178
|
};
|
package/libPixiJs.js
CHANGED
|
@@ -27,7 +27,8 @@ import { libPixiFilter } from "./Utils/LibPixiFilter";
|
|
|
27
27
|
import { libPixiShadow } from "./Utils/LibPixiShadow";
|
|
28
28
|
import { libPixiTickerTimeout } from "./Utils/LibPixiTickerTimeout";
|
|
29
29
|
import { LibPixiSlideInput } from "./Utils/LibPixiSlideInput";
|
|
30
|
-
import {
|
|
30
|
+
import { LibPixiGlobalUpdater } from "./Utils/LibPixiGlobalUpdater";
|
|
31
|
+
import { LibPixiPolygonDrawTool } from "./Utils/LibPixiPolygonDrawTool";
|
|
31
32
|
/** @description 组件 */
|
|
32
33
|
export const Components = {
|
|
33
34
|
Base: {
|
|
@@ -180,5 +181,9 @@ export const Utils = {
|
|
|
180
181
|
/** @description 事件总线更新实例汇总
|
|
181
182
|
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibGlobalUpdater-事件实例汇总
|
|
182
183
|
*/
|
|
183
|
-
|
|
184
|
+
LibPixiGlobalUpdater,
|
|
185
|
+
/** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制
|
|
186
|
+
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
|
|
187
|
+
*/
|
|
188
|
+
LibPixiPolygonDrawTool,
|
|
184
189
|
};
|