문서 둘러보기JavaScript

live2d-web 문서

JavaScript

React에 의존하지 않는 기본 API를 사용합니다.

생성·로드·정리

JavaScript API는 하나의 Canvas와 모델을 관리합니다. 모델을 조작하기 전에 로드가 끝날 때까지 기다리고, 화면에서 제거할 때는 반드시 dispose()를 호출하세요.

import { createLive2D } from 'live2d-web'
 
const character = await createLive2D({
  container: document.querySelector('#avatar'),
  coreUrl: '/live2dcubismcore.min.js',
  src: '/models/model.model3.json',
})
 
await character.motion('TapBody', 0)
 
// When the host view is removed:
character.dispose()

Canvas 접근성

Canvas를 보조 기술에 노출해야 할 때만 의미를 지정하세요. 옵션을 생략하면 기존 마크업을 그대로 유지합니다.

const character = await createLive2D({
  accessibility: {
    label: '움직이는 안내 캐릭터',
    fallbackText: '안내 캐릭터 그림',
  },
  container: document.querySelector('#avatar'),
  src: '/models/model.model3.json',
})

정보를 전달하지 않는 모델에는 { mode: 'decorative' }를 사용하세요. 탭과 모션 동작은 키보드로 조작할 수 있는 일반 DOM 버튼이나 컨트롤로도 제공해야 합니다. 런타임은 Canvas에 tabIndexrole="application"을 자동 추가하지 않습니다.

화면 생명주기와 맞추기

인스턴스는 컨테이너를 소유한 화면에서 보관하세요. 숨겨진 탭에서 애니메이션이 필요 없다면 일시 정지하고, 화면이 사라질 때 정리합니다. dispose()는 여러 번 호출해도 안전합니다.

const onVisibility = () => document.hidden ? character.pause() : character.resume()
document.addEventListener('visibilitychange', onVisibility)
 
window.addEventListener('pagehide', () => {
  document.removeEventListener('visibilitychange', onVisibility)
  character.dispose()
}, { once: true })

조작과 재시도 UI 만들기

모션, 표정, 재시도는 Canvas 밖의 일반 버튼으로 제공하세요. 로드 전에는 비활성화하고, 실패하면 Live2DError.code를 표시합니다. Core 경로, 모델 자산, WebGL 환경을 수정한 뒤 새 인스턴스로 재시도하세요.