[4.0.0-rc.6] Spine position incorrect inside a container with .setFiltersForceComposite(true)
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- javascript
調査の方向性
まず、提供された HTML 再現を Phaser 4.0.0-rc.6 と Spine プラグインで実行し、setFiltersForceComposite(true) を使用した場合と使用しない場合、および allContainer を異なる位置に配置した場合でレンダリングを比較します。コンテナのフィルター合成と Spine のレンダリングの経路を追跡します; ネストされたコンテナの両方のケースで Spine オブジェクトが正しい位置を維持すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Version
- Phaser Version: 4.0.0-rc.6
Description
If a spine game object is placed inside a container with .setFiltersForceComposite(true), it's position will be rendered wrong
Example Test Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="//cdn.jsdelivr.net/npm/[email protected]/dist/phaser.js"></script>
<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-phaser-v4.min.js"></script>
<title>Spine Phaser Example</title>
</head>
<body>
</body>
<script>
class BasicExample extends Phaser.Scene {
preload() {
this.load.spineBinary("spineboy-data", "https://esotericsoftware.com/files/examples/4.2/spineboy/export/spineboy-pro.skel");
this.load.spineAtlas("spineboy-atlas", "https://esotericsoftware.com/files/examples/4.2/spineboy/export/spineboy-pma.atlas");
}
create() {
const allContainer = this.add.container(100, 100);
const container = new Phaser.GameObjects.Container(this);
allContainer.add(container);
const container2 = new Phaser.GameObjects.Container(this)
.enableFilters()
.setFiltersForceComposite(true);
allContainer.add(container2);
const spineContainer = new Phaser.GameObjects.Container(this, 300, 400).setScale(0.5);
spineContainer.add(new Phaser.GameObjects.Rectangle(this, 0, -300, 500, 500, 0xFF0000, 0.5));
const spine = this.add.spine(0, 0, `spineboy-data`, `spineboy-atlas`);
spineContainer.add(spine);
container.add(spineContainer);
this.time.delayedCall(2000, () => {
container2.add(spineContainer);
});
}
}
new Phaser.Game({
type: Phaser.WEBGL,
width: 800,
height: 600,
scene: [BasicExample],
plugins: {
scene: [
{
key: "spine.SpinePlugin",
plugin: spine.SpinePlugin,
mapping: "spine",
},
],
},
});
</script>
</html>
In the code above, if .setFiltersForceComposite(true) is not called on container2, or if allContainer is at position (0,0) then the spine will be rendered correctly
- 主要言語
- JavaScript
- スター
- 40.3k
- フォーク
- 7.2k
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
phaserjs/phaser のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
phaserjs/phaser の issue をすべて見る
似ている issue
-
Add google analyticsオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
NCAR/music-box-interactive#628 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
remotion-dev/remotion#11847 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
phoenixframework/phoenix_live_view#4456 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
AllTheMods/ATM-10#4436 ·
メンテナーはふだん 5 日以内に返信