故事
在脚本中,我们可以通过函数拿到故事实例,从而对故事进行精细控制。
基础信息
故事实例中记录着当前故事发展的所有基础信息,开发者直接修改这些基础信息来进行精细化控制。
| 键值 | 名称 | 说明 | 可控 |
|---|---|---|---|
| story | 故事 | 当前故事 | |
| save | 存档 | 当前故事的存档 | |
| theme | 主题 | 当前故事的主题 | ✅ |
| scene | 场景 | 当前场景 | ✅ |
| message | 信息 | 通过赋值弹出信息提示 | ✅ |
| media | 媒体 | 当前载入的剧情媒体 | ✅ |
| mediaDom | 媒体dom | 正在播放的媒体dom | |
| paused | 暂停 | 是否暂停播放 | |
| valume | 音量 | 当前媒体的音量 | |
| tip | 提示 | 在此处赋值媒体可显示提示 | ✅ |
| played | 播放完成 | 剧情媒体是否完成播放 | |
| duration | 媒体时长 | 当前剧情媒体的时长 | |
| currentTime | 播放进度 | 当前播放进度 | |
| playbackRate | 播放速度 | 当前播放速度 | |
| fullscreen | 全屏 | 是否全屏 | |
| fnPanel | 子页面 | 当前子页面 | ✅ |
例如在按钮点击时弹出提示
js
export default {
...其他参数(不用管),
/**
* 事件运行
*
* @param {object} save 存档 - 故事存档
* @param {object} story 故事 - 故事对象,可进行提示,弹窗等对故事进行修改操作
* @param {object} loader 加载器 - 事件加载器的 Vue 节点
* @return {Promise<Place|yinObject|undefined>}
*/
run(save, story, loader) {
story.message = '你好啊'
/**
* message
* @typedef {object|string} message
* @property {string} content - 信息内容(支持富文本)(不支持内容渲染)
* @property {string} enterAnimation - 动画类 例如:animate__fadeInRight
* @property {object} style - 信息样式
* @property {number} duration - 显示时长
*/
story.message = {
content: '<p>你好啊</p>',
enterAnimation: 'animate__fadeInRight',
style: {
// 弹出改到左侧顶部
left:'21px'
},
duration: 2000
}
}
}功能
还可以通过一些功能控制故事表现。
| 事件 | 名称 | 说明 |
|---|---|---|
| play | 播放 | |
| pause | 暂停 | |
| speedCtrl | 切换播放速度 | 几个速度轮询切换 |
| speedUp | 全速播放 | 3倍速 |
| speedUpEnd | 退出全速播放 | |
| playToStart | 跳至场景开头 | |
| playToEnd | 跳至场景结尾 | 跳至剧情完成播放的时间点 |
| fullscreenCtrl | 全屏切换 | |
| selectSave | 切换存档 | 跳至存档选择页面 |
| logout | 登出 |
例如在按钮点击时暂停播放并调整播放进度
js
export default {
...其他参数(不用管),
/**
* 事件运行
*
* @param {object} save 存档 - 故事存档
* @param {object} story 故事 - 故事对象,可进行提示,弹窗等对故事进行修改操作
* @param {object} loader 加载器 - 事件加载器的 Vue 节点
* @return {Promise<Place|yinObject|undefined>}
*/
run(save, story, loader) {
story.pause()
// 媒体 dom 中 currentTime 的单位是 秒
story.mediaDom.currentTime = 5
story.message = '选择错误!\n时间停滞,轮回开始~~'
}
}