electron仿制UnrealEngine4 蓝图功能模块

来源:互联网 发布:ubuntu ntp server 编辑:程序博客网 时间:2024/06/06 03:30

electron仿制UnrealEngine4蓝图功能模块


这里写图片描述
1. electron的下载和安装
2. 右键菜单的实现
右键菜单
累的吐血。。。
这里写图片描述
2017/9/22更新
菜单节点控制

var treeMenuNode = {    instantObject: function (name,type) {        var treeMenuNode = new Object();        // console.log('generate treeMenuNode');        treeMenuNode.name = arguments[0];        treeMenuNode.tpye = arguments[1];        treeMenuNode.childrenNodes = new Array();        treeMenuNode.setChildrenNodes = function(array){            // this.childrenNodes = arguments[0].slice();            this.childrenNodes = arguments[0];        }        treeMenuNode.addChild = function(treeMenuNode){            // console.log('addChild')            this.childrenNodes.push(arguments[0]);        }        treeMenuNode.attacheTo = function(Node){            // console.log('attacheTo')            arguments[0].childrenNodes.push(treeMenuNode)        }        treeMenuNode.testfunction = function(){        }        treeMenuNode.traverse = function(textStack,tempStack){            // console.log()            // // console.log()            // arguments[0].push(treeMenuNode.name);            if(treeMenuNode.tpye == 'folder')            {                   arguments[0].push(                '<customFolder>'+                "<customFolderDeatils isOpen='false'>"+                '>'+                treeMenuNode.name+                "</customFolderDeatils>"                )                // arguments[1].push(treeMenuNode)                for(var i = 0;i<treeMenuNode.childrenNodes.length;i++)                {                    // console.log('test')                    treeMenuNode.childrenNodes[i].traverse(arguments[0],arguments[1]);                }                arguments[0].push(                    '</customFolder>'                )            }            else            {                arguments[0].push(                    '<customNode>'+                    treeMenuNode.name+                    '</customNode>'                )            }            return;        }        return treeMenuNode;    }}var treeMenuOptions = {    instantObject: function(elem,MenuNodes){        var treeMenuOptions = new Object();        treeMenuOptions.elem = arguments[0];        treeMenuOptions.treeMenuNodes = new Array();        treeMenuOptions.treeMenuNodes = arguments[1];        // console.log('generate treeMenuOptions')        return treeMenuOptions    }}var treeMenu = {    instantObject: function (MenuOptions) {        var treeMenu = new Object();        treeMenu.treeMenuOptions = arguments[0];        treeMenu.treeTextStack = new Array();        treeMenu.treeTempStack = new Array();        treeMenu.spawnTreeMenu = function(){            for(var i = 0;i<treeMenu.treeMenuOptions.treeMenuNodes.length;i++)            {                treeMenu.treeMenuOptions.treeMenuNodes[i].traverse(treeMenu.treeTextStack);            }            var x = document.getElementById(treeMenu.treeMenuOptions.elem)            x.innerHTML = treeMenu.treeTextStack.join('');        }        // console.log('generate treeMenu');        return treeMenu;    }}var treeMenuNode_1_3 = treeMenuNode.instantObject('testobject3');var treeMenuNode_1_2 = treeMenuNode.instantObject('testobject2');var treeMenuNode_1_1 = treeMenuNode.instantObject('testobject1');var treeMenuNode_2_3 = treeMenuNode.instantObject('testobject3');var treeMenuNode_2_2 = treeMenuNode.instantObject('testobject2');var treeMenuNode_2_1 = treeMenuNode.instantObject('testobject1');var treeMenuNode_1 = treeMenuNode.instantObject('object','folder');var treeMenuNode_2 = treeMenuNode.instantObject('function','folder');treeMenuNode_1.setChildrenNodes([treeMenuNode_1_1,treeMenuNode_1_2,treeMenuNode_1_3]);treeMenuNode_2.setChildrenNodes([treeMenuNode_2_1,treeMenuNode_2_2,treeMenuNode_2_3]);var myTreeMenuOptions = treeMenuOptions.instantObject('test',[treeMenuNode_1,treeMenuNode_2]);var myTreeMenu = treeMenu.instantObject(myTreeMenuOptions);myTreeMenu.spawnTreeMenu();// console.log(myTreeMenu.treeMenuOptions.elem);console.log(myTreeMenu.treeTextStack.join(''));function addTree(){    var treeMenuNode_1_3 = treeMenuNode.instantObject('testobject3');    var treeMenuNode_1_2 = treeMenuNode.instantObject('testobject2');    var treeMenuNode_1_1 = treeMenuNode.instantObject('testobject1');    var treeMenuNode_2_3 = treeMenuNode.instantObject('testobject3');    var treeMenuNode_2_2 = treeMenuNode.instantObject('testobject2');    var treeMenuNode_2_1 = treeMenuNode.instantObject('testobject1');    var treeMenuNode_1 = treeMenuNode.instantObject('object','folder');    var treeMenuNode_2 = treeMenuNode.instantObject('function','folder');    treeMenuNode_1.setChildrenNodes([treeMenuNode_1_1,treeMenuNode_1_2,treeMenuNode_1_3]);    treeMenuNode_2.setChildrenNodes([treeMenuNode_2_1,treeMenuNode_2_2,treeMenuNode_2_3]);    var myTreeMenuOptions = treeMenuOptions.instantObject('test',[treeMenuNode_1,treeMenuNode_2]);    var myTreeMenu = treeMenu.instantObject(myTreeMenuOptions);    // myTreeMenu.spawnTreeMenu();    // alert('123')    // alert(myTreeMenu.treeTextStack.length)    myTreeMenu.spawnTreeMenu();}

暂时功能为:生成树状菜单,
需要结合css进行样式控制
控制js脚本进行折叠控制。
代码写在博客里面还是有点麻烦,等有空了去git开个仓库。思路写博客,代码存仓库

2017/9/27
调整项目结构
目录结构
渲染与页面分开
3. 节点的实现
4. 通过菜单放置节点
5. 节点的完善
6. 抽象二叉树的生成
7. LLVM接口调用
8. 程序运行
flag立好了,哈哈哈。