## 通过控制台输出报文
通过课件编辑软件,菜单中的项目保存,正常保存之后,你可以得到保存信息的相关报文,在报文的**最后一行**可以得到课件目录。
```
/Users/robin/Library/Application Support/courseware-eeditor/tmp/668f1e76-099e-407a-a7cf-7b20a650e5e2/save
....
/Users/robin/Library/Application Support/courseware-eeditor/LookThisDir
```
## 通过项目目录
课件编辑器中的预览以及保存操作都会保存课件资源,对应的文件为/egret/src/workspace/PageBar.ts.
其中项目保存方法:onProjectSave,项目预览的方法:onPreviewProject,都会调用保存序列化对象的方法:saveSerializedSubjects。
具体方法内容:
1. 清空文件夹
2. 遍历页面列表,进行信息获取
3. 生成xml文档
4. 提示保存成功
## ipc.projecct的抽象定义
在方法内部有个ipc,具有的属性如下:基本为引入的libs中的模块属性,在project中定义了项目需要的方法。
![](https://box.kancloud.cn/a671e6eef52a13eeac177e40e85ec679_308x182.png)
## ipc.project ,
路径:egret/libs/ipc/project.d.ts
定义内容
```
declare namespace ipc.project {
function saveProjectDialog(cb: Function, thisObj: any): void;
function clearTempDir(cb: Function, thisObj: any): void;
function saveXml(xmlString: string, jsonString: string, cb: Function, thisObj: any): void;
function copyFiles(fileList: Array<ResourceItem>, cb: Function, thisObj: any): void;
function upload(projectInfo: any, cb: Function, thisObj: any): void;
function download(projectInfo: any, cb: Function, thisObj: any): void;
function unzip(projectInfo: any, cb: Function, thisObj: any): void;
}
```
## 判断题的元素从哪里来?
路径:Subject.Template.ABChoice
调用转换方法之前获取的,judgementSubject.ts在调用方法时传入了全量的判断题数据。
中判断题全部相关的内容,其中比较关键的有_serializationElements,序列化的元素,以及subjectname:judgment-1.
在构造器中初始化大量的判断题的模板数据,添加到画布中,并在最后,归纳到_serializationElements中。
## xml转换之前,拿到的是所有的元素的对象集合
![](https://box.kancloud.cn/41c50b1f567c9a3b3eeb7827cfdb5c89_398x484.png)
在文件中,/src/subject/template/judgementHelper 的 serializationXML方法,其中是判断题需要的所有的字段信息,内部是对象的各种属性都有的,实际只需要保存下类型和地址信息即可,用getResources方法。解析得到的结果如图:
![](https://box.kancloud.cn/8941af2ca529755fbff010c54eabceae_632x266.png)
因为属性不正确,所以根据正确的key进行重新赋值一遍对所有资源,得到resource的列表
而各个判断题的基本对象的属性,进行一次过滤,其中每个对象都具有自己的属性过滤方法,拿到属性后全量配置到scence中,根据每个对象的值,尤其是资源配置,从资源map中取值。(这个方法中可以看到大量的配置属性都是固定值,而非用户设置值)。
而actions默认是空的,返回空即可。
## 经过xml转化之后,配置信息变为
![](https://box.kancloud.cn/eaa5af988d3c7187cccb064453febd33_372x116.png)
也就是xml需要的节点信息的前身,
```
// 初始化需要变量
let attribute = [], resources = [], scenes = [], actions = [];
// 拼接json的节点信息
let root = {
root: {
attribute,
resources,
scenes,
actions
}
}
// 保存文件 利用json2xml模块
const json2xml = $require('json2xml');
const xml = json2xml(root, { attributes_key: '$', header: true });
```
- 相关资源链接
- 米乐星球小程序内调研
- 项目结构说明
- 交互课件说明
- server项目说明
- 项目说明
- 项目启动
- app.js做的事情
- 获取互动课件的地址
- 分析互动课件地址的参数
- policy目录--lesson.js
- 解析ppt--api/lesson.js
- 信令中的key:template
- 信令中的key:media
- kk-talkee-engine.js
- Message
- 课件模板页的识别过程
- 解析课件模板的源文件
- 场景与模板的对应关系
- 所有场景的基类
- choiceScence为例
- 注意事项
- ws
- online项目的说明
- online消息
- 课件编辑项目
- 资源链接
- 基本项目信息
- electron项目结构分析
- ipc
- 模板题组
- 普通题组
- 游戏题组
- 课件导出内容分析
- 课件模板分类明细
- 图片题
- 视频题
- 音频题
- 选择题
- 判断题
- 转盘
- 筛子
- 图层拖拽
- 动画题
- 翻拍题
- 语音题
- 201908变更
- 课件制作流程分析
- 菜单配置
- 入口操作
- 定义模板布局与初始化
- 选择素材
- 导出过程
- egret
- interface
- ad选择器模板
- ab选择器模板
- 图层拖拽模板
- 判断题模板
- xml
- 转盘
- events
- components
- 父类组件
- 基本组件
- 判断题组件
- 龙骨动画调研
- 基本了解
- 产品原型
- 白板Client项目
- 消息类型
- 白板项目分析
- 入口