diff --git a/index.html b/index.html
index 9247ebc0..df87a329 100644
--- a/index.html
+++ b/index.html
@@ -10,7 +10,7 @@
diff --git a/package-lock.json b/package-lock.json
index 1d626306..1c245de1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@next2d/player",
- "version": "2.1.5",
+ "version": "2.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@next2d/player",
- "version": "2.1.5",
+ "version": "2.2.0",
"license": "MIT",
"workspaces": [
"packages/*"
@@ -33,7 +33,7 @@
"rollup": "^4.40.0",
"tslib": "^2.8.1",
"typescript": "^5.8.3",
- "vite": "^6.3.0",
+ "vite": "^6.3.2",
"vitest": "^3.1.1",
"vitest-webgl-canvas-mock": "^1.1.0"
},
@@ -3873,9 +3873,9 @@
}
},
"node_modules/vite": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.0.tgz",
- "integrity": "sha512-9aC0n4pr6hIbvi1YOpFjwQ+QOTGssvbJKoeYkuHHGWwlXfdxQlI8L2qNMo9awEEcCPSiS+5mJZk5jH1PAqoDeQ==",
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.2.tgz",
+ "integrity": "sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg==",
"dev": true,
"license": "MIT",
"dependencies": {
diff --git a/package.json b/package.json
index 9279207d..13a951dc 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@next2d/player",
- "version": "2.1.5",
+ "version": "2.2.0",
"description": "Experience the fast and beautiful anti-aliased rendering of WebGL. You can create rich, interactive graphics, cross-platform applications and games without worrying about browser or device compatibility.",
"author": "Toshiyuki Ienaga (https://github.com/ienaga/)",
"license": "MIT",
@@ -62,7 +62,7 @@
"rollup": "^4.40.0",
"tslib": "^2.8.1",
"typescript": "^5.8.3",
- "vite": "^6.3.0",
+ "vite": "^6.3.2",
"vitest": "^3.1.1",
"vitest-webgl-canvas-mock": "^1.1.0"
},
diff --git a/packages/cache/src/CacheStore/service/CacheStoreGenerateKeysService.test.ts b/packages/cache/src/CacheStore/service/CacheStoreGenerateKeysService.test.ts
index e27bf8f4..ef21a9fa 100644
--- a/packages/cache/src/CacheStore/service/CacheStoreGenerateKeysService.test.ts
+++ b/packages/cache/src/CacheStore/service/CacheStoreGenerateKeysService.test.ts
@@ -5,11 +5,11 @@ describe("CacheStoreGenerateKeysService.js test", () =>
{
it("test case1", () =>
{
- expect(execute(0.25, 0.5, 0)).toBe(15480923);
+ expect(execute(0.25, 0.5, 0)).toBe(13038674);
});
it("test case2", () =>
{
- expect(execute(0.25, 0.5, 0.3)).toBe(6600597);
+ expect(execute(0.25, 0.5, 0.3)).toBe(6614284);
});
});
\ No newline at end of file
diff --git a/packages/cache/src/CacheStore/service/CacheStoreGenerateKeysService.ts b/packages/cache/src/CacheStore/service/CacheStoreGenerateKeysService.ts
index 888dda0c..673f9617 100644
--- a/packages/cache/src/CacheStore/service/CacheStoreGenerateKeysService.ts
+++ b/packages/cache/src/CacheStore/service/CacheStoreGenerateKeysService.ts
@@ -11,7 +11,7 @@
*/
export const execute = (x_scale: number, y_scale: number, alpha: number): number =>
{
- const values = [x_scale * 10000, y_scale * 10000];
+ const values = [x_scale * 10, y_scale * 10];
if (alpha) {
values.push(alpha * 100);
}
diff --git a/packages/core/src/Canvas/usecase/CanvasRegisterEventUseCase.test.ts b/packages/core/src/Canvas/usecase/CanvasRegisterEventUseCase.test.ts
index f0fbf74d..36082da5 100644
--- a/packages/core/src/Canvas/usecase/CanvasRegisterEventUseCase.test.ts
+++ b/packages/core/src/Canvas/usecase/CanvasRegisterEventUseCase.test.ts
@@ -18,13 +18,14 @@ describe("CanvasRegisterEventUseCase.js test", () =>
} as unknown as HTMLCanvasElement;
execute(MockCanvas);
- expect(results.length).toBe(6);
+ expect(results.length).toBe(7);
expect(results[0]).toBe(PointerEvent.POINTER_UP);
expect(results[1]).toBe(PointerEvent.POINTER_DOWN);
expect(results[2]).toBe(PointerEvent.POINTER_UP);
- expect(results[3]).toBe(PointerEvent.POINTER_MOVE);
- expect(results[4]).toBe(PointerEvent.POINTER_LEAVE);
- expect(results[5]).toBe(WheelEvent.WHEEL);
+ expect(results[3]).toBe(PointerEvent.POINTER_CANCEl);
+ expect(results[4]).toBe(PointerEvent.POINTER_MOVE);
+ expect(results[5]).toBe(PointerEvent.POINTER_LEAVE);
+ expect(results[6]).toBe(WheelEvent.WHEEL);
});
});
\ No newline at end of file
diff --git a/packages/core/src/Canvas/usecase/CanvasRegisterEventUseCase.ts b/packages/core/src/Canvas/usecase/CanvasRegisterEventUseCase.ts
index 2bd549a4..b0c5b129 100644
--- a/packages/core/src/Canvas/usecase/CanvasRegisterEventUseCase.ts
+++ b/packages/core/src/Canvas/usecase/CanvasRegisterEventUseCase.ts
@@ -46,6 +46,7 @@ export const execute = (canvas: HTMLCanvasElement): void =>
canvas.addEventListener(PointerEvent.POINTER_DOWN, canvasPointerDownEventUseCase as EventListener, { "passive": false });
canvas.addEventListener(PointerEvent.POINTER_UP, canvasPointerUpEventUseCase as EventListener);
+ canvas.addEventListener(PointerEvent.POINTER_CANCEl, canvasPointerUpEventUseCase as EventListener);
canvas.addEventListener(PointerEvent.POINTER_MOVE, canvasPointerMoveEventUseCase as EventListener, { "passive": false });
canvas.addEventListener(PointerEvent.POINTER_LEAVE, canvasPointerLeaveEventUseCase as EventListener);
canvas.addEventListener(WheelEvent.WHEEL, canvasWheelEventUseCase as EventListener);
diff --git a/packages/display/src/DisplayObject/usecase/DisplayObjectGetScaleXUseCase.ts b/packages/display/src/DisplayObject/usecase/DisplayObjectGetScaleXUseCase.ts
index 843eb85a..e8214311 100644
--- a/packages/display/src/DisplayObject/usecase/DisplayObjectGetScaleXUseCase.ts
+++ b/packages/display/src/DisplayObject/usecase/DisplayObjectGetScaleXUseCase.ts
@@ -32,7 +32,7 @@ export const execute = (display_object: D): number =>
xScale = +value.slice(0, index);
}
- xScale = Math.round(xScale * 10000) / 10000;
+ xScale = Math.round(xScale * 100) / 100;
}
return 0 > matrix[0] ? xScale * -1 : xScale;
diff --git a/packages/display/src/DisplayObject/usecase/DisplayObjectGetScaleYUseCase.ts b/packages/display/src/DisplayObject/usecase/DisplayObjectGetScaleYUseCase.ts
index 2bc801f6..d549513f 100644
--- a/packages/display/src/DisplayObject/usecase/DisplayObjectGetScaleYUseCase.ts
+++ b/packages/display/src/DisplayObject/usecase/DisplayObjectGetScaleYUseCase.ts
@@ -31,7 +31,7 @@ export const execute = (display_object: D): number =>
if (index !== -1) {
yScale = +value.slice(0, index);
}
- yScale = Math.round(yScale * 10000) / 10000;
+ yScale = Math.round(yScale * 100) / 100;
}
return 0 > matrix[0] ? yScale * -1 : yScale;
diff --git a/packages/display/src/DisplayObject/usecase/DisplayObjectSetHeightUseCase.test.ts b/packages/display/src/DisplayObject/usecase/DisplayObjectSetHeightUseCase.test.ts
index 078ae7ec..69cacd85 100644
--- a/packages/display/src/DisplayObject/usecase/DisplayObjectSetHeightUseCase.test.ts
+++ b/packages/display/src/DisplayObject/usecase/DisplayObjectSetHeightUseCase.test.ts
@@ -94,7 +94,7 @@ describe("DisplayObjectSetHeightUseCase.js test", () =>
expect(rawData[0]).toBe(1);
expect(rawData[1]).toBe(0);
expect(rawData[2]).toBe(0);
- expect(rawData[3]).toBe(0.33329999446868896);
+ expect(rawData[3]).toBe(0.33000001311302185);
expect(rawData[4]).toBe(0);
expect(rawData[5]).toBe(0);
});
diff --git a/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.test.ts b/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.test.ts
index d27e850e..55e56042 100644
--- a/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.test.ts
+++ b/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.test.ts
@@ -57,7 +57,7 @@ describe("DisplayObjectSetScaleXUseCase.js test", () =>
execute(displayObject, 2.2001231231005124151);
expect(displayObject.changed).toBe(true);
- expect(displayObject.$scaleX).toBe(2.2001);
+ expect(displayObject.$scaleX).toBe(2.2);
});
it("execute test case4", () =>
diff --git a/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.ts b/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.ts
index 6d7656b3..544cbf7f 100644
--- a/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.ts
+++ b/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.ts
@@ -24,7 +24,7 @@ export const execute = (display_object: D, scale_x: num
if (index !== -1) {
scale_x = +value.slice(0, index);
}
- scale_x = Math.round(scale_x * 10000) / 10000;
+ scale_x = Math.round(scale_x * 100) / 100;
}
if (display_object.$scaleX === scale_x) {
diff --git a/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.test.ts b/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.test.ts
index 28b05715..a7098eaa 100644
--- a/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.test.ts
+++ b/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.test.ts
@@ -57,7 +57,7 @@ describe("DisplayObjectSetScaleYUseCase.js test", () =>
execute(displayObject, 2.2001231231005124151);
expect(displayObject.changed).toBe(true);
- expect(displayObject.$scaleY).toBe(2.2001);
+ expect(displayObject.$scaleY).toBe(2.2);
});
it("execute test case4", () =>
diff --git a/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.ts b/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.ts
index 3a212de9..e3223856 100644
--- a/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.ts
+++ b/packages/display/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.ts
@@ -24,7 +24,7 @@ export const execute = (display_object: D, scale_y: num
if (index !== -1) {
scale_y = +value.slice(0, index);
}
- scale_y = Math.round(scale_y * 10000) / 10000;
+ scale_y = Math.round(scale_y * 100) / 100;
}
if (display_object.$scaleY === scale_y) {
diff --git a/packages/display/src/DisplayObject/usecase/DisplayObjectSetWidthUseCase.test.ts b/packages/display/src/DisplayObject/usecase/DisplayObjectSetWidthUseCase.test.ts
index ec0a9343..bf324b74 100644
--- a/packages/display/src/DisplayObject/usecase/DisplayObjectSetWidthUseCase.test.ts
+++ b/packages/display/src/DisplayObject/usecase/DisplayObjectSetWidthUseCase.test.ts
@@ -91,7 +91,7 @@ describe("DisplayObjectSetWidthUseCase.js test", () =>
throw new Error("rawData is null");
}
- expect(rawData[0]).toBe(0.4544999897480011);
+ expect(rawData[0]).toBe(0.44999998807907104);
expect(rawData[1]).toBe(0);
expect(rawData[2]).toBe(0);
expect(rawData[3]).toBe(1);
diff --git a/packages/display/src/Shape/usecase/ShapeGenerateRenderQueueUseCase.ts b/packages/display/src/Shape/usecase/ShapeGenerateRenderQueueUseCase.ts
index 460bdfe2..8ee5ca52 100644
--- a/packages/display/src/Shape/usecase/ShapeGenerateRenderQueueUseCase.ts
+++ b/packages/display/src/Shape/usecase/ShapeGenerateRenderQueueUseCase.ts
@@ -163,12 +163,12 @@ export const execute = (
const xScale = Math.round(Math.sqrt(
tMatrix[0] * tMatrix[0]
+ tMatrix[1] * tMatrix[1]
- ) * 10000) / 10000;
+ ) * 10) / 10;
const yScale = Math.round(Math.sqrt(
tMatrix[2] * tMatrix[2]
+ tMatrix[3] * tMatrix[3]
- ) * 10000) / 10000;
+ ) * 10) / 10;
if (!shape.isBitmap
&& !shape.cacheKey
diff --git a/packages/display/src/TextField/usecase/TextFieldGenerateRenderQueueUseCase.ts b/packages/display/src/TextField/usecase/TextFieldGenerateRenderQueueUseCase.ts
index 8fb40ca8..aadf0169 100644
--- a/packages/display/src/TextField/usecase/TextFieldGenerateRenderQueueUseCase.ts
+++ b/packages/display/src/TextField/usecase/TextFieldGenerateRenderQueueUseCase.ts
@@ -150,12 +150,12 @@ export const execute = (
const xScale = Math.round(Math.sqrt(
tMatrix[0] * tMatrix[0]
+ tMatrix[1] * tMatrix[1]
- ) * 10000) / 10000;
+ ) * 10) / 10;
const yScale = Math.round(Math.sqrt(
tMatrix[2] * tMatrix[2]
+ tMatrix[3] * tMatrix[3]
- ) * 10000) / 10000;
+ ) * 10) / 10;
if (text_field.changed
&& !text_field.cacheKey
diff --git a/packages/events/src/PointerEvent.ts b/packages/events/src/PointerEvent.ts
index bc33fa45..fcdcb071 100644
--- a/packages/events/src/PointerEvent.ts
+++ b/packages/events/src/PointerEvent.ts
@@ -149,4 +149,17 @@ export class PointerEvent extends Event
{
return "pointerup";
}
+
+ /**
+ * @description ポインターのキャンセル時に発生します。
+ * Occurs when the pointer is canceled.
+ *
+ * @return {string}
+ * @const
+ * @static
+ */
+ static get POINTER_CANCEl (): string
+ {
+ return "pointercancel";
+ }
}
\ No newline at end of file
diff --git a/packages/renderer/src/Shape/usecase/ShapeRenderUseCase.ts b/packages/renderer/src/Shape/usecase/ShapeRenderUseCase.ts
index 7664c2a3..69964a14 100644
--- a/packages/renderer/src/Shape/usecase/ShapeRenderUseCase.ts
+++ b/packages/renderer/src/Shape/usecase/ShapeRenderUseCase.ts
@@ -42,12 +42,12 @@ export const execute = (render_queue: Float32Array, index: number): number =>
const xScale = Math.round(Math.sqrt(
matrix[0] * matrix[0]
+ matrix[1] * matrix[1]
- ) * 10000) / 10000;
+ ) * 10) / 10;
const yScale = Math.round(Math.sqrt(
matrix[2] * matrix[2]
+ matrix[3] * matrix[3]
- ) * 10000) / 10000;
+ ) * 10) / 10;
let node: Node;
const hasCache = render_queue[index++];
@@ -205,8 +205,14 @@ export const execute = (render_queue: Float32Array, index: number): number =>
const radianY = Math.atan2(-matrix[2], matrix[3]);
if (radianX || radianY) {
- const tx = xMin * xScale;
- const ty = yMin * yScale;
+ const tx = xMin * Math.sqrt(
+ matrix[0] * matrix[0]
+ + matrix[1] * matrix[1]
+ );
+ const ty = yMin * Math.sqrt(
+ matrix[2] * matrix[2]
+ + matrix[3] * matrix[3]
+ );
const cosX = Math.cos(radianX);
const sinX = Math.sin(radianX);
diff --git a/packages/renderer/src/TextField/usecase/TextFieldRenderUseCase.ts b/packages/renderer/src/TextField/usecase/TextFieldRenderUseCase.ts
index 3859518b..436b158e 100644
--- a/packages/renderer/src/TextField/usecase/TextFieldRenderUseCase.ts
+++ b/packages/renderer/src/TextField/usecase/TextFieldRenderUseCase.ts
@@ -49,12 +49,12 @@ export const execute = (render_queue: Float32Array, index: number): number =>
const xScale = Math.round(Math.sqrt(
matrix[0] * matrix[0]
+ matrix[1] * matrix[1]
- ) * 10000) / 10000;
+ ) * 10) / 10;
const yScale = Math.round(Math.sqrt(
matrix[2] * matrix[2]
+ matrix[3] * matrix[3]
- ) * 10000) / 10000;
+ ) * 10) / 10;
let node: Node;
const hasCache = render_queue[index++];
@@ -192,8 +192,14 @@ export const execute = (render_queue: Float32Array, index: number): number =>
const radianY = Math.atan2(-matrix[2], matrix[3]);
if (radianX || radianY) {
- const tx = xMin * xScale;
- const ty = yMin * yScale;
+ const tx = xMin * Math.sqrt(
+ matrix[0] * matrix[0]
+ + matrix[1] * matrix[1]
+ );
+ const ty = yMin * Math.sqrt(
+ matrix[2] * matrix[2]
+ + matrix[3] * matrix[3]
+ );
const cosX = Math.cos(radianX);
const sinX = Math.sin(radianX);
diff --git a/src/index.ts b/src/index.ts
index 41a113b7..ed9f1f1e 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -3,7 +3,7 @@
import { Next2D } from "@next2d/core";
if (!("next2d" in window)) {
- console.log("%c Next2D Player %c 2.1.4 %c https://next2d.app",
+ console.log("%c Next2D Player %c 2.2.0 %c https://next2d.app",
"color: #fff; background: #5f5f5f",
"color: #fff; background: #4bc729",
"");