lyb-pixi-js 1.8.10 → 1.9.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.
@@ -70,10 +70,14 @@ export declare class LibPixiScrollContainerY extends LibPixiContainer {
70
70
  private _limitScrollRange;
71
71
  /** @description 更新滚动位置 */
72
72
  private _updateScrollbar;
73
+ /** @description 更新滚动条大小 */
74
+ private _updateScrollbarSize;
73
75
  /** @description 滚动条按下 */
74
76
  private _onScrollbarDragStart;
75
77
  /** @description 滚动条移动 */
76
78
  private _onScrollbarDragMove;
77
79
  /** @description 滚动条松开 */
78
80
  private _onScrollbarDragEnd;
81
+ /** @description 滚动结束一秒后隐藏滚动条 */
82
+ private _hideScrollbar;
79
83
  }
@@ -1,8 +1,8 @@
1
1
  import { Container } from "pixi.js";
2
+ import { gsap } from "gsap";
3
+ import { LibPixiRectangle } from "../Base/LibPixiRectangle";
2
4
  import { libPixiEvent } from "../../Utils/LibPixiEvent";
3
5
  import { LibPixiContainer } from "../Base/LibPixiContainer";
4
- import { LibPixiRectangle } from "../Base/LibPixiRectangle";
5
- import { gsap } from "gsap";
6
6
  /** @description 支持鼠标滚轮滚动、鼠标拖动、手指滑动,支持惯性滚动及回弹
7
7
  * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiScrollContainerY-Y 轴滚动容器
8
8
  */
@@ -41,13 +41,28 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
41
41
  this._scrollbar.x = width - (scrollbarRgiht || scrollbarWidth);
42
42
  this.addChild(this._scrollbar);
43
43
  this._scrollbar.visible = scrollbar;
44
- this._updateScrollbar();
44
+ this._scrollbar.alpha = 0;
45
+ this._updateScrollbarSize();
46
+ //是否已经离开滚动条
45
47
  libPixiEvent(this._scrollbar, "pointerdown", this._onScrollbarDragStart.bind(this));
48
+ libPixiEvent(this._scrollbar, "pointerenter", () => {
49
+ gsap.killTweensOf(this._scrollbar);
50
+ this._scrollbar.alpha = 1;
51
+ this._updateScrollbarSize();
52
+ });
53
+ libPixiEvent(this._scrollbar, "pointerleave", () => {
54
+ gsap.to(this._scrollbar, {
55
+ duration: 0.5,
56
+ alpha: 0,
57
+ delay: 1,
58
+ });
59
+ });
46
60
  // 添加事件监听
47
61
  this.eventMode = "static";
48
62
  this.on("pointerdown", this._onDragStart, this);
49
63
  libPixiEvent(this, "pointerdown", (event) => {
50
64
  this._onDragStart(event);
65
+ this._updateScrollbarSize();
51
66
  });
52
67
  libPixiEvent(this, "pointermove", (event) => {
53
68
  this._onScrollbarDragMove(event);
@@ -59,6 +74,7 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
59
74
  });
60
75
  libPixiEvent(this, "wheel", (event) => {
61
76
  this._onWheelScroll(event);
77
+ this._updateScrollbarSize();
62
78
  });
63
79
  libPixiEvent(this, "pointerupoutside", () => {
64
80
  this._onDragEnd();
@@ -75,6 +91,7 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
75
91
  this._maskGraphics.drawRect(0, 0, width, height);
76
92
  this._maskGraphics.endFill();
77
93
  this.setSize(width, height);
94
+ this._scrollbar.x = width - 50;
78
95
  }
79
96
  /** @description 返回顶部 */
80
97
  scrollToTop() {
@@ -103,8 +120,8 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
103
120
  const position = event.getLocalPosition(this);
104
121
  const newPosition = position.y - this._startY;
105
122
  this._content.y = newPosition;
123
+ this._updateScrollbar();
106
124
  }
107
- this._updateScrollbar();
108
125
  }
109
126
  /** @description 拖动结束 */
110
127
  _onDragEnd() {
@@ -122,6 +139,11 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
122
139
  this._velocity = 0;
123
140
  }
124
141
  this._limitScrollRange();
142
+ gsap.to(this._scrollbar, {
143
+ duration: 0.5,
144
+ alpha: 0,
145
+ delay: 0.25,
146
+ });
125
147
  }
126
148
  /** @description 滚轮滚动 */
127
149
  _onWheelScroll(event) {
@@ -144,6 +166,9 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
144
166
  onUpdate: () => {
145
167
  this._updateScrollbar();
146
168
  },
169
+ onComplete: () => {
170
+ this._hideScrollbar();
171
+ },
147
172
  });
148
173
  }
149
174
  /** @description 惯性动画 */
@@ -156,6 +181,9 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
156
181
  this._limitScrollRange();
157
182
  this._updateScrollbar();
158
183
  },
184
+ onComplete: () => {
185
+ this._hideScrollbar();
186
+ },
159
187
  });
160
188
  }
161
189
  /** @description 限制滚动范围 */
@@ -169,6 +197,9 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
169
197
  onUpdate: () => {
170
198
  this._updateScrollbar();
171
199
  },
200
+ onComplete: () => {
201
+ this._hideScrollbar();
202
+ },
172
203
  });
173
204
  }
174
205
  // 如果滚动距离大于内容高度减去遮罩高度
@@ -184,6 +215,9 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
184
215
  onUpdate: () => {
185
216
  this._updateScrollbar();
186
217
  },
218
+ onComplete: () => {
219
+ this._hideScrollbar();
220
+ },
187
221
  });
188
222
  }
189
223
  // 否则静止不动
@@ -194,29 +228,36 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
194
228
  onUpdate: () => {
195
229
  this._updateScrollbar();
196
230
  },
231
+ onComplete: () => {
232
+ this._hideScrollbar();
233
+ },
197
234
  });
198
235
  }
199
236
  }
200
237
  }
201
238
  /** @description 更新滚动位置 */
202
239
  _updateScrollbar() {
240
+ this._scrollbar.alpha = 1;
241
+ gsap.killTweensOf(this._scrollbar);
203
242
  const viewHeight = this._maskGraphics.height;
204
243
  const contentHeight = this._content.height;
205
- if (contentHeight <= viewHeight) {
206
- this._scrollbar.alpha = 0;
207
- return;
208
- }
209
- this._scrollbar.alpha = 1;
210
244
  const ratio = viewHeight / contentHeight;
211
245
  const barHeight = viewHeight * ratio;
212
246
  const maxScrollY = contentHeight - viewHeight;
213
247
  const scrollY = Math.min(Math.max(-this._content.y, 0), maxScrollY);
214
248
  const barY = (scrollY / maxScrollY) * (viewHeight - barHeight);
249
+ this._scrollbar.y = barY;
250
+ }
251
+ /** @description 更新滚动条大小 */
252
+ _updateScrollbarSize() {
253
+ const viewHeight = this._maskGraphics.height;
254
+ const contentHeight = this._content.height;
255
+ const ratio = viewHeight / contentHeight;
256
+ const barHeight = viewHeight * ratio;
215
257
  this._scrollbar.clear();
216
258
  this._scrollbar.beginFill(this._scrollbarColor);
217
259
  this._scrollbar.drawRect(0, 0, 10, barHeight);
218
260
  this._scrollbar.endFill();
219
- this._scrollbar.y = barY;
220
261
  }
221
262
  /** @description 滚动条按下 */
222
263
  _onScrollbarDragStart(event) {
@@ -246,4 +287,12 @@ export class LibPixiScrollContainerY extends LibPixiContainer {
246
287
  event.stopPropagation();
247
288
  this._scrollbarDragging = false;
248
289
  }
290
+ /** @description 滚动结束一秒后隐藏滚动条 */
291
+ _hideScrollbar() {
292
+ gsap.to(this._scrollbar, {
293
+ duration: 0.5,
294
+ alpha: 0,
295
+ delay: 0.25,
296
+ });
297
+ }
249
298
  }
package/README.md CHANGED
@@ -156,6 +156,12 @@ app.stage.addChild(box);
156
156
 
157
157
  \- [LibPixiPolygonDrawTool-多边形绘制](#LibPixiPolygonDrawTool-多边形绘制)
158
158
 
159
+ \- [LibPixiDigitalIncreasingAnimation-递增动画](#LibPixiDigitalIncreasingAnimation-递增动画)
160
+
161
+ \- [LibPixiDownScaleAnimation-按下放大](#LibPixiDownScaleAnimation-按下放大)
162
+
163
+ \- [LibPixiGridLayout-网格布局](#LibPixiGridLayout-网格布局)
164
+
159
165
  ## Base-基础
160
166
 
161
167
  ### LibPixiText-文本
@@ -1124,3 +1130,37 @@ $bus.on("play", () => {
1124
1130
  ```ts
1125
1131
  new LibPixiPolygonDrawTool(app);
1126
1132
  ```
1133
+
1134
+ ### LibPixiDigitalIncreasingAnimation-递增动画
1135
+
1136
+ > 数值递增动画
1137
+
1138
+ ```ts
1139
+ const amountAnimation = _digitalIncreasingAnimation({
1140
+ startValue: 0,
1141
+ value: 100,
1142
+ duration: 1,
1143
+ onChange: (v) => {
1144
+ this._winAmountText.text = v;
1145
+ },
1146
+ onComplete: () => {
1147
+ },
1148
+ });
1149
+ ```
1150
+
1151
+ ### LibPixiDownScaleAnimation-按下放大
1152
+
1153
+ > 鼠标按下放大
1154
+
1155
+ ```ts
1156
+ LibPixiDownScaleAnimation(sprite);
1157
+ ```
1158
+
1159
+ ### LibPixiGridLayout-网格布局
1160
+
1161
+ > 将元素按照指定的列数和间隔排列成网格布局
1162
+
1163
+ ```ts
1164
+ LibPixiGridLayout(cardList, 20, 3); //间隔20,一行三个
1165
+ ```
1166
+
@@ -0,0 +1,18 @@
1
+ export interface LibPixiDigitalIncreasingAnimationParams {
2
+ /** 目标值 */
3
+ value: number;
4
+ /** 开始值 */
5
+ startValue?: number;
6
+ /** 动画时长 */
7
+ duration?: number;
8
+ /** 值改变时触发 */
9
+ onChange: (value: string) => void;
10
+ /** 动画完成后触发 */
11
+ onComplete?: () => void;
12
+ }
13
+ /** @description 数值递增动画
14
+ * @param params 动画参数
15
+ * @returns 设置为目标值并停止动画
16
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDigitalIncreasingAnimation-递增动画
17
+ */
18
+ export declare const LibPixiDigitalIncreasingAnimation: (params: LibPixiDigitalIncreasingAnimationParams) => () => void;
@@ -0,0 +1,25 @@
1
+ import { libJsNumComma } from "lyb-js/Formatter/LibJsNumComma.js";
2
+ /** @description 数值递增动画
3
+ * @param params 动画参数
4
+ * @returns 设置为目标值并停止动画
5
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDigitalIncreasingAnimation-递增动画
6
+ */
7
+ export const LibPixiDigitalIncreasingAnimation = (params) => {
8
+ const { value, onChange, onComplete, startValue = 0, duration = 4 } = params;
9
+ // 动画递增的目标值
10
+ const animatedValue = { value: startValue };
11
+ // 使用 GSAP 创建递增动画
12
+ gsap.killTweensOf(animatedValue);
13
+ const amountAnimation = gsap.to(animatedValue, {
14
+ value,
15
+ duration,
16
+ ease: "linear",
17
+ onUpdate: () => {
18
+ onChange(libJsNumComma(animatedValue.value, 2));
19
+ },
20
+ onComplete: onComplete,
21
+ });
22
+ return () => {
23
+ amountAnimation.progress(1);
24
+ };
25
+ };
@@ -0,0 +1,6 @@
1
+ import { Container } from "pixi.js";
2
+ /** @description 按下放大
3
+ * @param container 要放大的容器
4
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDownScaleAnimation-按下放大
5
+ */
6
+ export declare const LibPixiDownScaleAnimation: (container: Container) => void;
@@ -0,0 +1,31 @@
1
+ import { libPixiEvent } from "./LibPixiEvent";
2
+ /** @description 按下放大
3
+ * @param container 要放大的容器
4
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDownScaleAnimation-按下放大
5
+ */
6
+ export const LibPixiDownScaleAnimation = (container) => {
7
+ libPixiEvent(container, "pointerdown", () => {
8
+ gsap.to(container, {
9
+ duration: 0.1,
10
+ pixi: {
11
+ scale: 1.1,
12
+ },
13
+ });
14
+ });
15
+ libPixiEvent(container, "pointerup", () => {
16
+ gsap.to(container, {
17
+ duration: 0.1,
18
+ pixi: {
19
+ scale: 1,
20
+ },
21
+ });
22
+ });
23
+ libPixiEvent(container, "pointerleave", () => {
24
+ gsap.to(container, {
25
+ duration: 0.1,
26
+ pixi: {
27
+ scale: 1,
28
+ },
29
+ });
30
+ });
31
+ };
@@ -0,0 +1,9 @@
1
+ import { Container } from "pixi.js";
2
+ /**
3
+ * @description 将元素按照指定的列数和间隔排列成网格布局。
4
+ * @param items 要排列的元素数组
5
+ * @param gap 每个元素之间的间隔
6
+ * @param cols 网格的列数,默认为元素数量
7
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiGridLayout-网格布局
8
+ */
9
+ export declare const LibPixiGridLayout: (items: Container[], gap: number, cols?: number) => void;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @description 将元素按照指定的列数和间隔排列成网格布局。
3
+ * @param items 要排列的元素数组
4
+ * @param gap 每个元素之间的间隔
5
+ * @param cols 网格的列数,默认为元素数量
6
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiGridLayout-网格布局
7
+ */
8
+ export const LibPixiGridLayout = (items, gap, cols = items.length) => {
9
+ let lastX = 0;
10
+ items.forEach((item, index) => {
11
+ const itemWidth = item.width || 0;
12
+ const itemHeight = item.height || 0;
13
+ const colIndex = index % cols;
14
+ const rowIndex = Math.floor(index / cols);
15
+ item.x = colIndex === 0 ? 0 : lastX + gap;
16
+ item.y = rowIndex * (itemHeight + gap);
17
+ lastX = item.x + itemWidth;
18
+ if (colIndex === cols - 1) {
19
+ lastX = 0;
20
+ }
21
+ });
22
+ };
package/libPixiJs.d.ts CHANGED
@@ -193,4 +193,23 @@ export declare const Utils: {
193
193
  * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
194
194
  */
195
195
  LibPixiPolygonDrawTool: typeof LibPixiPolygonDrawTool;
196
+ /** @description 数值递增动画
197
+ * @param params 动画参数
198
+ * @returns 设置为目标值并停止动画
199
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDigitalIncreasingAnimation-递增动画
200
+ */
201
+ LibPixiDigitalIncreasingAnimation: (params: import("./Utils/LibPixiDigitalIncreasingAnimation").LibPixiDigitalIncreasingAnimationParams) => () => void;
202
+ /** @description 按下放大
203
+ * @param container 要放大的容器
204
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDownScaleAnimation-按下放大
205
+ */
206
+ LibPixiDownScaleAnimation: (container: import("pixi.js").Container) => void;
207
+ /**
208
+ * @description 将元素按照指定的列数和间隔排列成网格布局。
209
+ * @param items 要排列的元素数组
210
+ * @param gap 每个元素之间的间隔
211
+ * @param cols 网格的列数,默认为元素数量
212
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiGridLayout-网格布局
213
+ */
214
+ LibPixiGridLayout: (items: import("pixi.js").Container[], gap: number, cols?: number) => void;
196
215
  };
package/libPixiJs.js CHANGED
@@ -33,6 +33,9 @@ import { LibPixiHtmlText } from "./Components/Base/LibPixiHtmlText";
33
33
  import { LibPixiRectangle } from "./Components/Base/LibPixiRectangle";
34
34
  import { LibPixiPolygon } from "./Components/Base/LibPixiPolygon";
35
35
  import { LibPixiCircular } from "./Components/Base/LibPixiCircular";
36
+ import { LibPixiDigitalIncreasingAnimation } from "./Utils/LibPixiDigitalIncreasingAnimation";
37
+ import { LibPixiDownScaleAnimation } from "./Utils/LibPixiDownScaleAnimation";
38
+ import { LibPixiGridLayout } from "./Utils/LibPixiGridLayout";
36
39
  /** @description 组件 */
37
40
  export const Components = {
38
41
  Base: {
@@ -203,4 +206,23 @@ export const Utils = {
203
206
  * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
204
207
  */
205
208
  LibPixiPolygonDrawTool,
209
+ /** @description 数值递增动画
210
+ * @param params 动画参数
211
+ * @returns 设置为目标值并停止动画
212
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDigitalIncreasingAnimation-递增动画
213
+ */
214
+ LibPixiDigitalIncreasingAnimation,
215
+ /** @description 按下放大
216
+ * @param container 要放大的容器
217
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDownScaleAnimation-按下放大
218
+ */
219
+ LibPixiDownScaleAnimation,
220
+ /**
221
+ * @description 将元素按照指定的列数和间隔排列成网格布局。
222
+ * @param items 要排列的元素数组
223
+ * @param gap 每个元素之间的间隔
224
+ * @param cols 网格的列数,默认为元素数量
225
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiGridLayout-网格布局
226
+ */
227
+ LibPixiGridLayout,
206
228
  };
package/lyb-pixi.js CHANGED
@@ -25751,7 +25751,7 @@ void main(void)\r
25751
25751
  return _isFunction(value) || _isString(value);
25752
25752
  }, _isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView || function() {
25753
25753
  }, _isArray = Array.isArray, _strictNumExp = /(?:-?\.?\d|\.)+/gi, _numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g, _numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g, _complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi, _relExp = /[+-]=-?[.\d]+/, _delimitedValueExp = /[^,'"\[\]\s]+/gi, _unitExp = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i, _globalTimeline, _win$1, _coreInitted, _doc$1, _globals = {}, _installScope = {}, _coreReady, _install = function _install2(scope) {
25754
- return (_installScope = _merge(scope, _globals)) && gsap;
25754
+ return (_installScope = _merge(scope, _globals)) && gsap$1;
25755
25755
  }, _missingPlugin = function _missingPlugin2(property, value) {
25756
25756
  return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()");
25757
25757
  }, _warn = function _warn2(message, suppress) {
@@ -26379,7 +26379,7 @@ void main(void)\r
26379
26379
  name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin";
26380
26380
  }
26381
26381
  _addGlobal(name, Plugin);
26382
- config.register && config.register(gsap, Plugin, PropTween);
26382
+ config.register && config.register(gsap$1, Plugin, PropTween);
26383
26383
  } else {
26384
26384
  _registerPluginQueue.push(config);
26385
26385
  }
@@ -26556,8 +26556,8 @@ void main(void)\r
26556
26556
  if (!_coreInitted && _windowExists$1()) {
26557
26557
  _win$1 = _coreInitted = window;
26558
26558
  _doc$1 = _win$1.document || {};
26559
- _globals.gsap = gsap;
26560
- (_win$1.gsapVersions || (_win$1.gsapVersions = [])).push(gsap.version);
26559
+ _globals.gsap = gsap$1;
26560
+ (_win$1.gsapVersions || (_win$1.gsapVersions = [])).push(gsap$1.version);
26561
26561
  _install(_installScope || _win$1.GreenSockGlobals || !_win$1.gsap && _win$1 || {});
26562
26562
  _registerPluginQueue.forEach(_createPlugin);
26563
26563
  }
@@ -28423,7 +28423,7 @@ void main(void)\r
28423
28423
  target = toArray(target);
28424
28424
  if (target.length > 1) {
28425
28425
  var setters = target.map(function(t2) {
28426
- return gsap.quickSetter(t2, property, unit);
28426
+ return gsap$1.quickSetter(t2, property, unit);
28427
28427
  }), l2 = setters.length;
28428
28428
  return function(value) {
28429
28429
  var i2 = l2;
@@ -28446,7 +28446,7 @@ void main(void)\r
28446
28446
  },
28447
28447
  quickTo: function quickTo(target, property, vars) {
28448
28448
  var _merge2;
28449
- var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = "+=0.1", _merge2.paused = true, _merge2), vars || {})), func = function func2(value, start, startIsRelative) {
28449
+ var tween = gsap$1.to(target, _merge((_merge2 = {}, _merge2[property] = "+=0.1", _merge2.paused = true, _merge2), vars || {})), func = function func2(value, start, startIsRelative) {
28450
28450
  return tween.resetTo(property, value, start, startIsRelative);
28451
28451
  };
28452
28452
  func.tween = tween;
@@ -28632,7 +28632,7 @@ void main(void)\r
28632
28632
  }
28633
28633
  };
28634
28634
  };
28635
- var gsap = _gsap.registerPlugin({
28635
+ var gsap$1 = _gsap.registerPlugin({
28636
28636
  name: "attr",
28637
28637
  init: function init2(target, vars, tween, index, targets) {
28638
28638
  var p2, pt, v2;
@@ -28661,7 +28661,7 @@ void main(void)\r
28661
28661
  }
28662
28662
  }
28663
28663
  }, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap;
28664
- Tween.version = Timeline$1.version = gsap.version = "3.12.5";
28664
+ Tween.version = Timeline$1.version = gsap$1.version = "3.12.5";
28665
28665
  _coreReady = 1;
28666
28666
  _windowExists$1() && _wake();
28667
28667
  _easeMap.Power0;
@@ -28789,7 +28789,7 @@ void main(void)\r
28789
28789
  revert: _revertStyle,
28790
28790
  save: _saveStyle
28791
28791
  };
28792
- target._gsap || gsap.core.getCache(target);
28792
+ target._gsap || gsap$1.core.getCache(target);
28793
28793
  properties && properties.split(",").forEach(function(p2) {
28794
28794
  return saver.save(p2);
28795
28795
  });
@@ -28822,7 +28822,7 @@ void main(void)\r
28822
28822
  _transformOriginProp = _transformProp + "Origin";
28823
28823
  _tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0";
28824
28824
  _supports3D = !!_checkPropPrefix("perspective");
28825
- _reverting = gsap.core.reverting;
28825
+ _reverting = gsap$1.core.reverting;
28826
28826
  _pluginInitted = 1;
28827
28827
  }
28828
28828
  }, _getBBoxHack = function _getBBoxHack2(swapIfPossible) {
@@ -29696,8 +29696,8 @@ void main(void)\r
29696
29696
  _getMatrix
29697
29697
  }
29698
29698
  };
29699
- gsap.utils.checkPrefix = _checkPropPrefix;
29700
- gsap.core.getStyleSaver = _getStyleSaver;
29699
+ gsap$1.utils.checkPrefix = _checkPropPrefix;
29700
+ gsap$1.core.getStyleSaver = _getStyleSaver;
29701
29701
  (function(positionAndScale, rotation, others, aliases) {
29702
29702
  var all = _forEachName(positionAndScale + "," + rotation + "," + others, function(name) {
29703
29703
  _transformProps[name] = 1;
@@ -29715,8 +29715,8 @@ void main(void)\r
29715
29715
  _forEachName("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function(name) {
29716
29716
  _config.units[name] = "px";
29717
29717
  });
29718
- gsap.registerPlugin(CSSPlugin);
29719
- var gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap;
29718
+ gsap$1.registerPlugin(CSSPlugin);
29719
+ var gsapWithCSS = gsap$1.registerPlugin(CSSPlugin) || gsap$1;
29720
29720
  gsapWithCSS.core.Tween;
29721
29721
  class LibPixiRectBgColor extends Graphics {
29722
29722
  constructor(options) {
@@ -49268,16 +49268,30 @@ void main(void)\r
49268
49268
  this._scrollbar.x = width - (scrollbarRgiht || scrollbarWidth);
49269
49269
  this.addChild(this._scrollbar);
49270
49270
  this._scrollbar.visible = scrollbar;
49271
- this._updateScrollbar();
49271
+ this._scrollbar.alpha = 0;
49272
+ this._updateScrollbarSize();
49272
49273
  libPixiEvent(
49273
49274
  this._scrollbar,
49274
49275
  "pointerdown",
49275
49276
  this._onScrollbarDragStart.bind(this)
49276
49277
  );
49278
+ libPixiEvent(this._scrollbar, "pointerenter", () => {
49279
+ gsapWithCSS.killTweensOf(this._scrollbar);
49280
+ this._scrollbar.alpha = 1;
49281
+ this._updateScrollbarSize();
49282
+ });
49283
+ libPixiEvent(this._scrollbar, "pointerleave", () => {
49284
+ gsapWithCSS.to(this._scrollbar, {
49285
+ duration: 0.5,
49286
+ alpha: 0,
49287
+ delay: 1
49288
+ });
49289
+ });
49277
49290
  this.eventMode = "static";
49278
49291
  this.on("pointerdown", this._onDragStart, this);
49279
49292
  libPixiEvent(this, "pointerdown", (event) => {
49280
49293
  this._onDragStart(event);
49294
+ this._updateScrollbarSize();
49281
49295
  });
49282
49296
  libPixiEvent(this, "pointermove", (event) => {
49283
49297
  this._onScrollbarDragMove(event);
@@ -49289,6 +49303,7 @@ void main(void)\r
49289
49303
  });
49290
49304
  libPixiEvent(this, "wheel", (event) => {
49291
49305
  this._onWheelScroll(event);
49306
+ this._updateScrollbarSize();
49292
49307
  });
49293
49308
  libPixiEvent(this, "pointerupoutside", () => {
49294
49309
  this._onDragEnd();
@@ -49304,6 +49319,7 @@ void main(void)\r
49304
49319
  this._maskGraphics.drawRect(0, 0, width, height);
49305
49320
  this._maskGraphics.endFill();
49306
49321
  this.setSize(width, height);
49322
+ this._scrollbar.x = width - 50;
49307
49323
  }
49308
49324
  /** @description 返回顶部 */
49309
49325
  scrollToTop() {
@@ -49332,8 +49348,8 @@ void main(void)\r
49332
49348
  const position = event.getLocalPosition(this);
49333
49349
  const newPosition = position.y - this._startY;
49334
49350
  this._content.y = newPosition;
49351
+ this._updateScrollbar();
49335
49352
  }
49336
- this._updateScrollbar();
49337
49353
  }
49338
49354
  /** @description 拖动结束 */
49339
49355
  _onDragEnd() {
@@ -49348,6 +49364,11 @@ void main(void)\r
49348
49364
  this._velocity = 0;
49349
49365
  }
49350
49366
  this._limitScrollRange();
49367
+ gsapWithCSS.to(this._scrollbar, {
49368
+ duration: 0.5,
49369
+ alpha: 0,
49370
+ delay: 0.25
49371
+ });
49351
49372
  }
49352
49373
  /** @description 滚轮滚动 */
49353
49374
  _onWheelScroll(event) {
@@ -49365,6 +49386,9 @@ void main(void)\r
49365
49386
  y: y2,
49366
49387
  onUpdate: () => {
49367
49388
  this._updateScrollbar();
49389
+ },
49390
+ onComplete: () => {
49391
+ this._hideScrollbar();
49368
49392
  }
49369
49393
  });
49370
49394
  }
@@ -49377,6 +49401,9 @@ void main(void)\r
49377
49401
  onUpdate: () => {
49378
49402
  this._limitScrollRange();
49379
49403
  this._updateScrollbar();
49404
+ },
49405
+ onComplete: () => {
49406
+ this._hideScrollbar();
49380
49407
  }
49381
49408
  });
49382
49409
  }
@@ -49389,6 +49416,9 @@ void main(void)\r
49389
49416
  ease: "elastic.out",
49390
49417
  onUpdate: () => {
49391
49418
  this._updateScrollbar();
49419
+ },
49420
+ onComplete: () => {
49421
+ this._hideScrollbar();
49392
49422
  }
49393
49423
  });
49394
49424
  } else if (Math.abs(this._content.y) >= this._content.height - this._maskGraphics.height) {
@@ -49400,6 +49430,9 @@ void main(void)\r
49400
49430
  ease: "elastic.out",
49401
49431
  onUpdate: () => {
49402
49432
  this._updateScrollbar();
49433
+ },
49434
+ onComplete: () => {
49435
+ this._hideScrollbar();
49403
49436
  }
49404
49437
  });
49405
49438
  } else {
@@ -49408,6 +49441,9 @@ void main(void)\r
49408
49441
  y: 0,
49409
49442
  onUpdate: () => {
49410
49443
  this._updateScrollbar();
49444
+ },
49445
+ onComplete: () => {
49446
+ this._hideScrollbar();
49411
49447
  }
49412
49448
  });
49413
49449
  }
@@ -49415,23 +49451,27 @@ void main(void)\r
49415
49451
  }
49416
49452
  /** @description 更新滚动位置 */
49417
49453
  _updateScrollbar() {
49454
+ this._scrollbar.alpha = 1;
49455
+ gsapWithCSS.killTweensOf(this._scrollbar);
49418
49456
  const viewHeight = this._maskGraphics.height;
49419
49457
  const contentHeight = this._content.height;
49420
- if (contentHeight <= viewHeight) {
49421
- this._scrollbar.alpha = 0;
49422
- return;
49423
- }
49424
- this._scrollbar.alpha = 1;
49425
49458
  const ratio = viewHeight / contentHeight;
49426
49459
  const barHeight = viewHeight * ratio;
49427
49460
  const maxScrollY = contentHeight - viewHeight;
49428
49461
  const scrollY = Math.min(Math.max(-this._content.y, 0), maxScrollY);
49429
49462
  const barY = scrollY / maxScrollY * (viewHeight - barHeight);
49463
+ this._scrollbar.y = barY;
49464
+ }
49465
+ /** @description 更新滚动条大小 */
49466
+ _updateScrollbarSize() {
49467
+ const viewHeight = this._maskGraphics.height;
49468
+ const contentHeight = this._content.height;
49469
+ const ratio = viewHeight / contentHeight;
49470
+ const barHeight = viewHeight * ratio;
49430
49471
  this._scrollbar.clear();
49431
49472
  this._scrollbar.beginFill(this._scrollbarColor);
49432
49473
  this._scrollbar.drawRect(0, 0, 10, barHeight);
49433
49474
  this._scrollbar.endFill();
49434
- this._scrollbar.y = barY;
49435
49475
  }
49436
49476
  /** @description 滚动条按下 */
49437
49477
  _onScrollbarDragStart(event) {
@@ -49464,6 +49504,14 @@ void main(void)\r
49464
49504
  event.stopPropagation();
49465
49505
  this._scrollbarDragging = false;
49466
49506
  }
49507
+ /** @description 滚动结束一秒后隐藏滚动条 */
49508
+ _hideScrollbar() {
49509
+ gsapWithCSS.to(this._scrollbar, {
49510
+ duration: 0.5,
49511
+ alpha: 0,
49512
+ delay: 0.25
49513
+ });
49514
+ }
49467
49515
  }
49468
49516
  const LibJsLerp = (start, end, value) => {
49469
49517
  const t2 = Math.min(Math.max(value, 0), 1);
@@ -54984,6 +55032,69 @@ void main(void){
54984
55032
  this.endFill();
54985
55033
  }
54986
55034
  }
55035
+ const libJsNumComma = (num, reserve = 2) => {
55036
+ const str = num.toFixed(reserve).toString();
55037
+ const reg = str.indexOf(".") > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;
55038
+ return str.replace(reg, "$1,");
55039
+ };
55040
+ const LibPixiDigitalIncreasingAnimation = (params) => {
55041
+ const { value, onChange, onComplete, startValue = 0, duration = 4 } = params;
55042
+ const animatedValue = { value: startValue };
55043
+ gsap.killTweensOf(animatedValue);
55044
+ const amountAnimation = gsap.to(animatedValue, {
55045
+ value,
55046
+ duration,
55047
+ ease: "linear",
55048
+ onUpdate: () => {
55049
+ onChange(libJsNumComma(animatedValue.value, 2));
55050
+ },
55051
+ onComplete
55052
+ });
55053
+ return () => {
55054
+ amountAnimation.progress(1);
55055
+ };
55056
+ };
55057
+ const LibPixiDownScaleAnimation = (container) => {
55058
+ libPixiEvent(container, "pointerdown", () => {
55059
+ gsap.to(container, {
55060
+ duration: 0.1,
55061
+ pixi: {
55062
+ scale: 1.1
55063
+ }
55064
+ });
55065
+ });
55066
+ libPixiEvent(container, "pointerup", () => {
55067
+ gsap.to(container, {
55068
+ duration: 0.1,
55069
+ pixi: {
55070
+ scale: 1
55071
+ }
55072
+ });
55073
+ });
55074
+ libPixiEvent(container, "pointerleave", () => {
55075
+ gsap.to(container, {
55076
+ duration: 0.1,
55077
+ pixi: {
55078
+ scale: 1
55079
+ }
55080
+ });
55081
+ });
55082
+ };
55083
+ const LibPixiGridLayout = (items, gap, cols = items.length) => {
55084
+ let lastX = 0;
55085
+ items.forEach((item, index) => {
55086
+ const itemWidth = item.width || 0;
55087
+ const itemHeight = item.height || 0;
55088
+ const colIndex = index % cols;
55089
+ const rowIndex = Math.floor(index / cols);
55090
+ item.x = colIndex === 0 ? 0 : lastX + gap;
55091
+ item.y = rowIndex * (itemHeight + gap);
55092
+ lastX = item.x + itemWidth;
55093
+ if (colIndex === cols - 1) {
55094
+ lastX = 0;
55095
+ }
55096
+ });
55097
+ };
54987
55098
  const Components = {
54988
55099
  Base: {
54989
55100
  /** @description 自定义位图文本
@@ -55151,7 +55262,26 @@ void main(void){
55151
55262
  /** @description 多边形绘制工具,绘制时浏览器窗口需要全屏显示,空格键控制开始和结束,开始后鼠标进行点击绘制,退格删除点,空格结束绘制,绘制结果在控制台打印,不满意可再次按空格清空并重新绘制
55152
55263
  * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiPolygonDrawTool-多边形绘制
55153
55264
  */
55154
- LibPixiPolygonDrawTool
55265
+ LibPixiPolygonDrawTool,
55266
+ /** @description 数值递增动画
55267
+ * @param params 动画参数
55268
+ * @returns 设置为目标值并停止动画
55269
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDigitalIncreasingAnimation-递增动画
55270
+ */
55271
+ LibPixiDigitalIncreasingAnimation,
55272
+ /** @description 按下放大
55273
+ * @param container 要放大的容器
55274
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiDownScaleAnimation-按下放大
55275
+ */
55276
+ LibPixiDownScaleAnimation,
55277
+ /**
55278
+ * @description 将元素按照指定的列数和间隔排列成网格布局。
55279
+ * @param items 要排列的元素数组
55280
+ * @param gap 每个元素之间的间隔
55281
+ * @param cols 网格的列数,默认为元素数量
55282
+ * @link 使用方法:https://www.npmjs.com/package/lyb-pixi-js#LibPixiGridLayout-网格布局
55283
+ */
55284
+ LibPixiGridLayout
55155
55285
  };
55156
55286
  const LibPixiJs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
55157
55287
  __proto__: null,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lyb-pixi-js",
3
- "version": "1.8.10",
3
+ "version": "1.9.0",
4
4
  "description": "自用Pixi.JS方法库",
5
5
  "license": "ISC",
6
6
  "exports": {