lyb-pixi-js 1.3.9 → 1.4.0
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/Components/Base/LibPixiSpine.d.ts +1 -0
- package/Components/Base/LibPixiSpine.js +1 -0
- package/README.md +10 -0
- package/Utils/LibPixiPolygonDrawTool.d.ts +28 -0
- package/Utils/LibPixiPolygonDrawTool.js +107 -0
- package/libPixiJs.d.ts +5 -0
- package/libPixiJs.js +5 -0
- package/lyb-pixi.js +145 -143
- 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,28 @@
|
|
|
1
|
+
import { type Application } from "pixi.js";
|
|
2
|
+
/** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制 */
|
|
3
|
+
export declare class LibPixiPolygonDrawTool {
|
|
4
|
+
/** App */
|
|
5
|
+
private _app;
|
|
6
|
+
/** 多边形 */
|
|
7
|
+
private _polygon;
|
|
8
|
+
/** 是否正在绘制 */
|
|
9
|
+
private _drawing;
|
|
10
|
+
/** 储点的数组 */
|
|
11
|
+
private _points;
|
|
12
|
+
/** 起始点 */
|
|
13
|
+
private _startPoint;
|
|
14
|
+
/** 实际绘制的点 */
|
|
15
|
+
private _realPoints;
|
|
16
|
+
/** 点元素 */
|
|
17
|
+
private _pointElements;
|
|
18
|
+
constructor(app: Application);
|
|
19
|
+
private _setupListeners;
|
|
20
|
+
/** @description 控制绘制开始和结束 */
|
|
21
|
+
private toggleDrawing;
|
|
22
|
+
/** @description 添加点坐标 */
|
|
23
|
+
private _addPoint;
|
|
24
|
+
/** @description 绘制多边形 */
|
|
25
|
+
private _drawPolygon;
|
|
26
|
+
/** @description 绘制一个点 */
|
|
27
|
+
private _drawDot;
|
|
28
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Graphics, } from "pixi.js";
|
|
2
|
+
/** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制 */
|
|
3
|
+
export class LibPixiPolygonDrawTool {
|
|
4
|
+
constructor(app) {
|
|
5
|
+
/** 是否正在绘制 */
|
|
6
|
+
this._drawing = false;
|
|
7
|
+
/** 储点的数组 */
|
|
8
|
+
this._points = [];
|
|
9
|
+
/** 起始点 */
|
|
10
|
+
this._startPoint = [];
|
|
11
|
+
/** 实际绘制的点 */
|
|
12
|
+
this._realPoints = [];
|
|
13
|
+
/** 点元素 */
|
|
14
|
+
this._pointElements = [];
|
|
15
|
+
this._app = app;
|
|
16
|
+
this._app.stage.sortableChildren = true;
|
|
17
|
+
this._polygon = new Graphics();
|
|
18
|
+
this._app.stage.addChild(this._polygon);
|
|
19
|
+
this._polygon.zIndex = 999999;
|
|
20
|
+
this._setupListeners();
|
|
21
|
+
}
|
|
22
|
+
_setupListeners() {
|
|
23
|
+
// 监听键盘空格键按下事件
|
|
24
|
+
window.addEventListener("keydown", (event) => {
|
|
25
|
+
if (event.code === "Space") {
|
|
26
|
+
this.toggleDrawing();
|
|
27
|
+
}
|
|
28
|
+
else if (event.code === "Backspace") {
|
|
29
|
+
this._points.pop();
|
|
30
|
+
this._realPoints.pop();
|
|
31
|
+
this._drawPolygon();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
// 监听鼠标点击事件
|
|
35
|
+
this._app.stage.eventMode = "static";
|
|
36
|
+
this._app.stage.on("pointerdown", (event) => {
|
|
37
|
+
if (this._drawing) {
|
|
38
|
+
this._addPoint(event);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/** @description 控制绘制开始和结束 */
|
|
43
|
+
toggleDrawing() {
|
|
44
|
+
if (this._drawing) {
|
|
45
|
+
console.warn("绘制结束");
|
|
46
|
+
this._points.push({ x: 0, y: 0 });
|
|
47
|
+
console.log(this._points.flat());
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
console.warn("开始绘制");
|
|
51
|
+
this._startPoint = [];
|
|
52
|
+
this._points = [];
|
|
53
|
+
this._realPoints = [];
|
|
54
|
+
this._polygon.clear();
|
|
55
|
+
this._pointElements.forEach((item) => item.destroy());
|
|
56
|
+
this._pointElements = [];
|
|
57
|
+
}
|
|
58
|
+
this._drawing = !this._drawing;
|
|
59
|
+
}
|
|
60
|
+
/** @description 添加点坐标 */
|
|
61
|
+
_addPoint(event) {
|
|
62
|
+
const x = Number(event.clientX.toFixed(0));
|
|
63
|
+
const y = Number(event.clientY.toFixed(0));
|
|
64
|
+
this._realPoints.push({ x, y });
|
|
65
|
+
// 如果是第一个点,记录为原点(0, 0)
|
|
66
|
+
if (this._startPoint.length === 0) {
|
|
67
|
+
this._startPoint = [{ x, y }];
|
|
68
|
+
this._points.push({ x: 0, y: 0 });
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// 计算相对于第一个点的偏移
|
|
72
|
+
const offsetX = x - this._startPoint[0].x;
|
|
73
|
+
const offsetY = y - this._startPoint[0].y;
|
|
74
|
+
// 将相对坐标添加到数组
|
|
75
|
+
this._points.push({
|
|
76
|
+
x: Number(offsetX.toFixed(0)),
|
|
77
|
+
y: Number(offsetY.toFixed(0)),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
this._drawPolygon();
|
|
81
|
+
}
|
|
82
|
+
/** @description 绘制多边形 */
|
|
83
|
+
_drawPolygon() {
|
|
84
|
+
this._polygon.clear();
|
|
85
|
+
this._polygon.beginFill(0x66ccff);
|
|
86
|
+
this._polygon.drawPolygon(this._realPoints);
|
|
87
|
+
this._polygon.endFill();
|
|
88
|
+
this._polygon.alpha = 0.5;
|
|
89
|
+
//渲染点
|
|
90
|
+
this._pointElements.forEach((point) => point.destroy());
|
|
91
|
+
this._pointElements = [];
|
|
92
|
+
this._realPoints.forEach((point) => {
|
|
93
|
+
this._pointElements.push(this._drawDot(point.x, point.y));
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/** @description 绘制一个点 */
|
|
97
|
+
_drawDot(x, y) {
|
|
98
|
+
const pointElement = new Graphics();
|
|
99
|
+
pointElement.beginFill(0xff0000);
|
|
100
|
+
pointElement.drawCircle(x, y, 5);
|
|
101
|
+
pointElement.endFill();
|
|
102
|
+
pointElement.alpha = 0.5;
|
|
103
|
+
this._app.stage.addChild(pointElement);
|
|
104
|
+
pointElement.zIndex = 999999;
|
|
105
|
+
return pointElement;
|
|
106
|
+
}
|
|
107
|
+
}
|
package/libPixiJs.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { LibPixiTable } from "./Components/Custom/LibPixiTable";
|
|
|
17
17
|
import { LibPixiAudio } from "./Utils/LibPixiAudio";
|
|
18
18
|
import { LibPixiSlideInput } from "./Utils/LibPixiSlideInput";
|
|
19
19
|
import { LibGlobalUpdater } from "./Utils/LibGlobalUpdater";
|
|
20
|
+
import { LibPixiPolygonDrawTool } from "./Utils/LibPixiPolygonDrawTool";
|
|
20
21
|
/** @description 组件 */
|
|
21
22
|
export declare const Components: {
|
|
22
23
|
Base: {
|
|
@@ -170,4 +171,8 @@ export declare const Utils: {
|
|
|
170
171
|
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibGlobalUpdater-事件实例汇总
|
|
171
172
|
*/
|
|
172
173
|
LibGlobalUpdater: typeof LibGlobalUpdater;
|
|
174
|
+
/** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制
|
|
175
|
+
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
|
|
176
|
+
*/
|
|
177
|
+
LibPixiPolygonDrawTool: typeof LibPixiPolygonDrawTool;
|
|
173
178
|
};
|
package/libPixiJs.js
CHANGED
|
@@ -28,6 +28,7 @@ import { libPixiShadow } from "./Utils/LibPixiShadow";
|
|
|
28
28
|
import { libPixiTickerTimeout } from "./Utils/LibPixiTickerTimeout";
|
|
29
29
|
import { LibPixiSlideInput } from "./Utils/LibPixiSlideInput";
|
|
30
30
|
import { LibGlobalUpdater } from "./Utils/LibGlobalUpdater";
|
|
31
|
+
import { LibPixiPolygonDrawTool } from "./Utils/LibPixiPolygonDrawTool";
|
|
31
32
|
/** @description 组件 */
|
|
32
33
|
export const Components = {
|
|
33
34
|
Base: {
|
|
@@ -181,4 +182,8 @@ export const Utils = {
|
|
|
181
182
|
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibGlobalUpdater-事件实例汇总
|
|
182
183
|
*/
|
|
183
184
|
LibGlobalUpdater,
|
|
185
|
+
/** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制
|
|
186
|
+
* @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
|
|
187
|
+
*/
|
|
188
|
+
LibPixiPolygonDrawTool,
|
|
184
189
|
};
|