Skip to content

Commit db439d4

Browse files
おんJ民おんJ民
authored andcommitted
fix
1 parent 417e7b1 commit db439d4

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/lib/anime.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ export const init = (
2929
layersByI.clear();
3030
canvasByI.clear();
3131
dataURLByI.clear();
32+
activatedByI.clear();
3233
};
3334

3435
export const iByWay = new Map<Way, number>();
3536
export const layersByI = new Map<number, oekaki.LayeredCanvas[]>();
3637
export const canvasByI = new Map<number, HTMLCanvasElement>();
3738
export const dataURLByI = new Map<number, string>();
39+
export const activatedByI = new Map<number, oekaki.LayeredCanvas>();
3840

3941
type Way = {
4042
key: string;

src/lib/components/CharaChipPanelPart.svelte

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,24 @@
2929
const now = anime.layersByI.get($activeIndex);
3030
if (now) {
3131
oekaki.setLayers(now);
32-
activeLayer = now[now.length - 1];
3332
} else {
3433
oekaki.setLayers([]);
3534
activeLayer = new oekaki.LayeredCanvas("レイヤー #1");
3635
}
3736
});
3837
38+
// キャラチップ切り替え時に元のレイヤーを選び直す実装
39+
// TODO: レイヤーが1枚しかないときの新規レイヤー追加時にバグあり
40+
$effect(() => {
41+
const activatedLayer = anime.activatedByI.get($activeIndex);
42+
if (!activatedLayer || $activeIndex === prevIndex) {
43+
anime.activatedByI.set($activeIndex, activeLayer);
44+
} else {
45+
activeLayer = activatedLayer;
46+
prevIndex = $activeIndex;
47+
}
48+
});
49+
3950
let pointerupTimestampAfter = $state(0);
4051
$effect(() => {
4152
if (!initTimestamp || !pointerupTimestamp) return;

0 commit comments

Comments
 (0)