---
# System prepended metadata

title: 接口与事件文档

---

# 接口与事件文档
# 通用
每层需提供一个init函数用于注册event handler(如果是组件类型则需自行使用eventBus注册).
## 事件管理
通过`eventBus.ts`导入`eventBus`.
## 可访问getter
`app`: pixi-Application实例

## 接收事件
`hide`: 清除当前内容

# 人物层
人物层负责处理人物的显示, 人物特效, 人物动作.
## 接收事件
`showCharacter`
展示人物
参数: 
```ts
 interface ShowCharacter{
      characters: Character[],
      characterEffect: CharacterEffect[],
 }
 interface Character{
      position: number,
      CharacterName: number,
      face: number,
      highlight: boolean
}
    
interface CharacterEffect{
      target: number //注意指的是position
       type:'emotion'|'action'|'signal'|'fx'
      effect: string,
      async: boolean
}
```
具体的人物特效请参考[剧情播放器人物特效索引表](https://github.com/ba-archive/blue-archive-story-viewer/issues/32)
## 发出事件
`characterDone`: 人物各种处理已完成
`playEmotionAudio`: 要求播放人物情绪特效语音
## 可使用的getter
`characterSpineData`: 根据CharacterName获取spineData
`emotionResources`: 获取人物情绪图片url, 返回一个string数组, 图片的排列按从底部到顶部, 从左到右排列.
## 需要处理的state
`currentCharacterList: CharacterInstance[]`: 当前显示的人物与其其其

# 背景层
背景层负责背景的显示
## 接收事件
`showBg`: 展示背景, 带一个string参数表示背景图片url

## 需要处理的state
`bgInstance`: 背景实例

# 声音层
声音层负责背景音乐, 效果音, 语音等的播放
## 接受事件
`playAudio`: 播放bgm, sound, 或voiceJP

参数:
```ts
interface PlayAudio{
    bgmUrl?:string
    soundUrl?:string
    voiceJPUrl?:string
}
```
`playEmotionAudio`: 播放人物情绪动作特效音, 参数是一个string代表人物的情绪动作

# UI层
UI层负责UI的相关功能
## 发出事件
`skip`: 跳过剧情
`auto`: 启动自动模式
## 可使用getter
`logText`: 已播放剧情语句
`storySummary`: 剧情梗概
# 文字层
文字层负责有对话框文字, 无对话框文字, 选项的显示.
## 接收事件
`showTitle`: 显示标题, 接受一个string参数作为标题
`showPlace`: 显示地点, 接受一个string参数作为地点
`showText`: 显示普通对话框文字
参数
```ts
export interface ShowText {
  text: Text[]
  textEffect: TextEffect[]
  speaker?: Speaker
}
```
`st`: 显示无对话框文字
参数: 
```ts
interface StText{
    text: Text[]
    textEffect: TextEffect[]
    stArgs:string[] 
}
interface Text {
    content: string
    waitTime?: number
}
interface TextEffect {
    name: 'color'|'fontsize'|'ruby',,
    value: string[],
    textIndex: number
}
```
其中stArgs通常只需要注意第二个参数, serial打字机效果, instant立即全部显示.
当没有清除无对话框文字时, 新来的文字需要放在原来文字的下方.
`clearSt`: 清除无对话框文字
`option`: 显示选项
参数: ShowOption[]
```ts
interface Option {
    SelectionGroup: number,
    text: string
}
```
## 发出事件
`next`: 进入下一语句
    
`select`: 选择后加入下一剧情语句, 需要带一个number类型的参数
## 可使用getter
`nameAndNickName`: 根据CharacterName获取name和nickname
## 需要处理的state
`_logText`: 已播放剧情语句
# 特效层
特效层用于播放除人物相关特效外的特效
## 接收事件
`playEffect`: 播放特效
## 发出事件
`effectDone`: 特效播放完成时发出的事件
# L2D层
L2D层用于播放L2D
## 接收事件
`playL2D`: 加载L2D
`changeAnimation`: 更换动画, 接受一个string参数作为动画名
`endL2D`: 停止L2D
## 可使用getter
`l2dSpineData`: 获取l2d的spine数据


