# editor
直接使用游戏运行时(之后简称core)的代码来绘制游戏画面, 借助fs.js来实现浏览器编辑文件. 通过表格编辑数据, blockly图块编辑事件, code mirror编辑文本的可视化魔塔编辑器.
![](img_md/view1.png)
左侧数据区, 中间地图区, 右侧素材区
![](img_md/view2.png)
事件编辑器
![](img_md/view3.png)
脚本编辑器
> 此文件是editor的结构说明, 不是使用文档
## 组成
本目录下所有文件,以及`../editor.html`,`../editor-mobile.html`和`../启动服务.exe`,`../server.py`是地图编辑器的所有组件.
### 父目录
+ editor(-mobile).html
编辑器的[入口页面](http://127.0.0.1:1055/editor.html)
以`display:none`的形式引入了core的`index.html`的`dom`,修改了原来的`.gameCanvas #ui #data`等的名字以避免冲突
+ 启动服务.exe [源码](http://github.com/ckcz123/mota-js-server/)
为fs.js提供后端支持, 同时集成了一些实用工具
+ server.py
非windows平台中为fs.js提供后端支持
### core
游戏运行时中部分代码根据`main.mod=='editor'`进行了调整
+ 通过`main.init('editor')`加载数据
+ `editor`模式关闭了部分动画
+ `core.drawMap`中`editor`模式下不再画图,而是生成画图的函数提+ 供给`editor`
+ `editor`模式下`GlobalAnimate`可以独立的选择是否播放
+ `core.playBgm`和`core.playSound`中非`play`模式不再播放声音
+ `core.show`和`core.hide`中非`play`模式不再进行动画而是立刻+ 完成并执行回调
+ `editor`模式不执行`core.resize`
### fs.js
依照[issue#31](https://github.com/ckcz123/mota-js/issues/13)的约定, 模仿node的fs模块提供如下api,与`启动服务.exe`,`server.py`配合为js提供文件读写功能, 是编辑器成立的前提
``` js
fs.readFile('file.in','utf-8',callback)
//读文本文件
//callback:function(err, data)
//data:字符串
fs.readFile('file.in','base64',callback)
//读二进制文件
//callback:function(err, data)
//data:base64字符串
fs.writeFile('file.out', data ,'utf-8', callback)
//写文本文件
//callback:function(err)
//data:字符串
fs.writeFile('file.out', data ,'base64', callback)
//写二进制文件
//callback:function(err)
//data:base64字符串
fs.readdir(path, callback)
//callback:function(err, data)
//path:支持"/"做分隔符
//data:[filename1,filename2,..] filename是字符串,只包含文件不包含目录
//所有参数不允许缺省
```
### editor_multi.js
用[CodeMirror](https://github.com/codemirror/CodeMirror) 实现有高亮的多行文本编辑
编辑选定`id_`的文本域
``` js
editor_multi.import(id_,{lint:true})
```
编辑blockly方块的特定域
``` js
editor_multi.multiLineEdit(value,b,f,{lint:true},callback)
```
配置表格
``` js
editor_multi.editCommentJs(mod)
```
### MotaAction.g4
通过[antlr-blockly](https://github.com/zhaouv/antlr-blockly)的语法定义core中各事件对应的方块.
借助google的[blockly](https://github.com/google/blockly)来实现事件的可视化编辑.
入口方块以`_m`结尾
一般语句写在`action`中, 以`_s`结尾
### editor_blockly.js
把选定`id_`的事件用blockly编辑
``` js
editor_blockly.import(id_,{type:'event'});
```
把文本区域的代码转换成图块
``` js
editor_blockly.parse();
```
`initscript中`的`toolboxObj`定义了侧边栏中显示的图块
自定义`Blockly.FieldColour.prototype.createWidget_`修改了颜色选择器的行为
自定义`Blockly.FieldTextInput.prototype.showInlineEditor_`添加了自动补全
### editor_mode.js
用于切换数据区
加载数据
```javascript
editor.mode.loc();
editor.mode.enemyitem();
editor.mode.floor();
editor.mode.tower();
editor.mode.functions();
```
切换模式
```javascript
editor.mode.onmode('');//清空
editor.mode.onmode('save');//保存
editor.mode.onmode('nextChange');//下次onmode时前端进行切换
editor.mode.onmode('loc');
editor.mode.onmode('enemyitem');
editor.mode.onmode('floor');
editor.mode.onmode('tower');
editor.mode.onmode('functions');
editor.mode.onmode('map');
editor.mode.onmode('appendpic');
```
在`onmode('save')`时,改动才会保存到文件,涉及到图片的改动需要刷新页面使得`editor`能看到
数据区一些通用的函数也定义在这里
### editor_table.js
处理表格的生成, 及其响应的事件
其接受来自../project/\*.js的数据`obj`和来自table/\*.comment.js的注释`commentObj`
commentObj的结构如示例
``` js
{
"_type": "object",
"_data": {
"events": {
"_type": "object",
"_data": {
"resetGame": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "重置整个游戏"
},
"setInitData": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "设置初始属性"
},
```
一层正常数据, 一层`_`开头的结构说明, 忽略`_`层的话与obj同结构
通过
``` js
editor.table.objToTable(obj, commentObj)
editor.table.objToTr
editor.table.objToTd
```
遍历这两个对象来生成表格, 叶节点根据`_type`渲染成对应的dom
表格的值变化`onchange`, 双击`dblclickfunc`, 删除`deletefunc`, 添加`addfunc`也定义在此文件
### editor_mappanel.js
与地图区相关的功能
+ 画地图 线/矩形/tileset
+ 通过地图选中事件或素材
+ 右键菜单
+ 切换楼层
+ 大地图移动可视窗口
### editor_materialpanel.js
与素材区相关的功能
+ 选中
+ 展开/折叠
### editor_datapanel.js
与数据区相关的功能 (且与表格无关的功能)
+ 地图编辑
- 创建新地图
- 批量创建
+ 地图选点
+ 图块属性
- 注册素材
- 修改id
+ 楼层属性
- 修改楼层id
+ 全塔属性
+ 脚本编辑
+ 追加素材
- 选择导入的区域
- 导入图片
- 改色相
- 选中图片中的格子
- 确认追加
+ 公共事件
+ 插件编写
### editor_ui.js
ui事件中没有具体到前三个区中的函数
+ 响应点击
+ 快捷键
+ 显示帮助
+ UI预览 & 地图选点相关
### editor_util.js
一些通用的函数
+ 生成id
+ HTML转义
+ 像素处理
+ base64的encode/decode
+ 检查值是否为空
### editor_listen.js
界面与功能的绑定
### editor_file.js
包装fs.js, 把数据读写到对应的文件
### editor_game.js
游戏数据的处理
此部分的重构未完成, 实际上是由editor_file.js和editor_file_unsorted.js来做的
### editor.js
初始化加整合各模块
现状是还放了一些游戏数据有关的函数未挪到editor_game, 以及部分和入口页面生成有关的函数
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 HTML5魔塔塔防样板源码+项目说明(可以根据自己的意愿造出想要的塔防游戏).zip
资源推荐
资源详情
资源评论
收起资源包目录
HTML5魔塔塔防样板源码+项目说明(可以根据自己的意愿造出想要的塔防游戏).zip (232个子文件)
thunder.animate 98KB
zone.animate 29KB
yongchang.animate 25KB
hand.animate 11KB
jianji.animate 7KB
sword.animate 2KB
editor_color_dark.css 17KB
editor_color.css 14KB
vue.css 13KB
editor.css 11KB
editor_mobile.css 11KB
codemirror.css 10KB
styles.css 8KB
awesomplete.css 1KB
handdelete.cur 766B
handclosed.cur 326B
handopen.cur 198B
rgss.dll 1.56MB
Newtonsoft.Json.dll 350KB
EcmaScript.NET.dll 342KB
Jint.dll 244KB
ICSharpCode.SharpZipLib.dll 184KB
Yahoo.Yui.Compressor.dll 38KB
启动服务.exe 56KB
动画编辑器.exe 55KB
RM动画导出器.exe 42KB
便捷PS工具.exe 30KB
怪物数据导出器.exe 29KB
截图识别器.exe 20KB
伤害和临界值计算器.exe 19KB
JS代码压缩工具.exe 14KB
MotaAction.g4 141KB
1x1.gif 43B
editor-mobile.html 26KB
editor.html 26KB
index.html 9KB
index.html 7KB
fsTest_cs.html 2KB
console2.jpg 161KB
editor.jpg 149KB
quickshops.jpg 142KB
floor.jpg 142KB
blockly.jpg 132KB
mapsc.jpg 94KB
firstdatab.jpg 93KB
uievent.jpg 81KB
elements.jpg 79KB
values_flagsb.jpg 75KB
images_texty.jpg 73KB
events.jpg 68KB
sources.jpg 61KB
maps_waits_raw.jpg 57KB
bgm.jpg 56KB
values.jpg 56KB
control_itemsg.jpg 47KB
flowctrl.jpg 38KB
compare.jpg 34KB
V2_8server.jpg 28KB
bg.jpg 27KB
server.jpg 25KB
console1.jpg 23KB
plugin.jpg 14KB
changefloor.jpg 12KB
console.jpg 6KB
blockly_compressed.js 606KB
plugins.js 224KB
defs.js 202KB
Converter.bundle.min.js 196KB
codeMirror.bundle.min.js 186KB
jshint.min.js 180KB
ui.js 150KB
control.js 142KB
acorn.min.js 133KB
events.js 132KB
codeMirror.plugin.js 128KB
maps.js 123KB
zip.js 118KB
actions.js 117KB
functions.js 89KB
tern.min.js 75KB
blocks_compressed.js 74KB
beautify.min.js 72KB
MotaActionParser.js 72KB
codeMirror.plugin.min.js 59KB
editor_ui.js 55KB
editor_datapanel.js 53KB
editor_blockly.js 51KB
docsify.min.js 50KB
editor_mappanel.js 49KB
color.all.min.js 46KB
utils.js 45KB
editor_file.js 44KB
editor.js 42KB
javascript_compressed.js 41KB
zh-hans.js 33KB
zip.min.js 31KB
main.js 30KB
localforage.min.js 29KB
editor_blocklyconfig.js 28KB
editor_table.js 26KB
共 232 条
- 1
- 2
- 3
资源评论
土豆片片
- 粉丝: 1841
- 资源: 5723
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功