|
@@ -312,16 +312,27 @@ export const addSubtitle = (data: AnimationModelSubtitle) => {
|
|
([map, exists]) => {
|
|
([map, exists]) => {
|
|
if (!map?.am) return;
|
|
if (!map?.am) return;
|
|
if (exists && !map.subtitles[data.id]) {
|
|
if (exists && !map.subtitles[data.id]) {
|
|
- map.subtitles[data.id] = mount(
|
|
|
|
- document.querySelector("#app")!,
|
|
|
|
- Subtitle,
|
|
|
|
- reactive({
|
|
|
|
- pixel: pixel,
|
|
|
|
- show,
|
|
|
|
- data,
|
|
|
|
- sizeChang: (csize: Size) => (size.value = csize),
|
|
|
|
- })
|
|
|
|
- );
|
|
|
|
|
|
+ const mountEl = document.querySelector("#app")!
|
|
|
|
+ const layer = document.createElement('div')
|
|
|
|
+ layer.className = 'subtitle'
|
|
|
|
+ const cleanups = [
|
|
|
|
+ watchEffect(() => {
|
|
|
|
+ layer.innerHTML = data.content
|
|
|
|
+ size.value = { width: layer.offsetWidth, height: layer.offsetHeight }
|
|
|
|
+ }),
|
|
|
|
+ watchEffect(() => layer.style.background = data.background),
|
|
|
|
+ watchEffect(() => {
|
|
|
|
+ layer.style.visibility = pixel.value && show.value ? 'visible' : 'hidden'
|
|
|
|
+ }),
|
|
|
|
+ watchEffect(() => {
|
|
|
|
+ if (pixel.value) {
|
|
|
|
+ layer.style.transform = `translate(${pixel.value.x}px, ${pixel.value.y}px)`;
|
|
|
|
+ }
|
|
|
|
+ }),
|
|
|
|
+ () => mountEl.removeChild(layer)
|
|
|
|
+ ]
|
|
|
|
+ mountEl.appendChild(layer)
|
|
|
|
+ map.subtitles[data.id] = mergeFuns(cleanups)
|
|
} else if (!exists && map.subtitles[data.id]) {
|
|
} else if (!exists && map.subtitles[data.id]) {
|
|
map.subtitles[data.id]();
|
|
map.subtitles[data.id]();
|
|
delete map.subtitles[data.id];
|
|
delete map.subtitles[data.id];
|
|
@@ -332,14 +343,14 @@ export const addSubtitle = (data: AnimationModelSubtitle) => {
|
|
);
|
|
);
|
|
let isRun = false
|
|
let isRun = false
|
|
const update = () => {
|
|
const update = () => {
|
|
- if (isRun) return;
|
|
|
|
- isRun = true
|
|
|
|
- setTimeout(() => {
|
|
|
|
|
|
+ // if (isRun) return;
|
|
|
|
+ // isRun = true
|
|
|
|
+ // setTimeout(() => {
|
|
pixel.value = amMap[am.id]?.am?.getCurrentSubtitlePixel(
|
|
pixel.value = amMap[am.id]?.am?.getCurrentSubtitlePixel(
|
|
size.value
|
|
size.value
|
|
);
|
|
);
|
|
- isRun = false
|
|
|
|
- }, 160);
|
|
|
|
|
|
+ // isRun = false
|
|
|
|
+ // }, 16);
|
|
};
|
|
};
|
|
|
|
|
|
const stopAttrib = mergeFuns(
|
|
const stopAttrib = mergeFuns(
|