cocoscreator扩展编辑器菜鸟简易上手教程
**
个人开发过程中的见解
官方文档:https://docs.cocos/creator/manual/zh/extension/
首先在项目的packages文件夹下新建一个文件夹(命名为扩展包的名字)
扩展包底下必须含有这几个文件
其中:
index.js为具体页面结构编写(若不需要弹出的panel界面则不需要)
main.js为入口程序
package.json为用途描述
接下来详细描述三个文件的内容构成首先是
package.json
{
"name": "extended-editor",
"version": "0.0.1",
"description": "一份简单的扩展包",
"author": "Cocos Creator",
"main": "main.js",
"panel": {
"main": "index.js",
"type": "dockable",
"title": "Extend Editor",
"width": 400,
"height": 700
},
"main-menu": {
"extend/Hello World": {
"message": "extended-editor:say-hello"
},
"extend/Extend Editor": {
"message": "extended-editor:open"
}
},
"license": "ISC",
"repository": {
"type": "",
"url": ""
},
"dependencies": {
"node-cmd": "^3.0.0"
}
}
name:包名,全局唯一;
version:版本号;
description:描述;
author:作者;
main:入口程序,即为main.js;
panel:弹出面板的信息main:页面构成详细文件,即为index.js;title:弹出面板的标题
;width、height:面板默认宽高,当你手动改变面板宽高时,编辑器会记忆最后一次的宽高。
main-menu:编辑器的菜单,结构为主菜单名/菜单选项:{消息message:“扩展包名:入口程序中IPC消息监听messages下函数名”}
如图:
入口程序main.js:
module.exports = {
load() {
},
unload() {
},
messages: {
"say-hello"(event, ...args) {
Editor.log("Hello World!",args);
},
open() {
Editor.Panel.open('extended-editor');
},
},
};
可以通过在load和unload中注册监听和取消监听来对构建过程进行修改
具体参照官方文档:定制项目构建流程
https://docs.cocos/creator/manual/zh/publish/custom-project-build-template.html?h=build-fini
messages为IPC消息监听。
由于-作为函数名会报错,所以用双引号。其中args是随着消息传输过来的参数。
有关IPC通信:
面板向主进程发送消息:
Editor.Ipc.sendToMain(‘extended-editor:say-hello’, “nihao~”);
结果如下图
其余进程向进程,进程向面板的消息通信请参考官方文档:
https://docs.cocos/creator/manual/zh/extension/ipc-workflow.html
页面index.js
Editor.Panel.extend({
style: `
:host { margin: 5px; }
h2 { color: #f90; }
`,
template: `
<h2>标准面板</h2>
<hr />
<div>label: <span id="label">--</span></div><br>
<div>button:<ui-button id="btn">点击</ui-button></div><br>
<div>input:<ui-input placeholder="..." id="input1"></ui-input></div><br>
<div>num input:<ui-num-input placeholder="Search..." step=1></ui-num-input></div><br>
<div>select:<ui-select value="4">
<option value="0">Foo</option>
<option value="1">Bar</option>
<option value="2">Hello</option>
<option value="3">World</option>
<option value="4">A Long Text</option>
</ui-select></div>
`,
$: {
btn: '#btn',
},
ready() {
this.$btn.addEventListener('confirm', () => {
Editor.Ipc.sendToMain('extended-editor:say-hello', "nihao~");
});
},
});
style:样式,其中margin为边距,h2的color为h2的颜色
template:页面具体内容,使用html的语法,cocoscreator重新封装的标签。更多标签,请参考官方文档:https://docs.cocos/creator/manual/zh/extension/using-ui-kit.html
$:绑定控件,名称:’#该控件的id’。
另外可以新建index.html来保存template的内容,然后使用require的fs
template: fs.readFileSync(Editor.url("packages://包名/index.html"))
读取即可。
ready():逻辑代码,基本上为各种控件监听。有两种形式,一种如以上使用addEventListener,另外一种为添加vue,需要在template对应标签添加如下
<ui-button id="btn" v-on:confirm="onBtnClick">点击</ui-button>
vue响应
this.vue = new window.Vue({
el: this.shadowRoot,
methods: {
onBtnClick(event) {
Editor.log("btn click");
},
}
});
通过event.target可以获取标签的各种信息,比如event.target.id获取id,event.target.value,event.target.innerText标签中间的文字,此处对应"点击"。
Tips:
1.有关nodejs的npm install,需要在package.json中添加以下字段
"license": "ISC",
"repository": {
"type": "",
"url": ""
},
否则install会出现warn。
2.添加滑动条,可以使用
<div style="height: 100%; overflow:scroll"> </div>
在此div块的内容如果超出屏幕会生成滚动条。但是高度也有限制在2000px~3000px之间。
3.nodejs的fs和path可以直接require,不需要install。
var path = require("path");
var fs = require("fs");
4.load与unload中无法使用Editor.url(“db://”),和Editor.url(“packages://”)获取项目路径。
更多推荐
cocoscreator扩展编辑器菜鸟简易上手教程
发布评论