给js小伙伴们的中秋礼物:view代码生成器(支持所有控件)

1. 安装nodejs环境http://,1
2. 解压压缩包中的文件
3. 拷贝编辑器导出的json文件到tool文件夹下,点击bat文件
ps:代码很简单,基于nodejs ,使用模板替换,大家可以随意修改
工具代码:
tool文件代码

/**

  • @author yu
    /
    var path = require(“path”);
    var fs = require(“fs”);
    var rootPath = __filename;
    function readFilesInDir(dir){
    fs.readdir(dir, function(error, files){
    var len = files.length;
    var file = null;
    for (var i = 0; i < len; i++) {
    file = files
    ;
    handle(dir + “\” + file);
    }
    })
    }

function handle(filepath){
var LableItemS = ];
var ButtonItemS = ];
var eventItemS = ];
var ImageViewItemS = ];
var file = null;
var txt = “”;
var image = “”;
var event = “”;
var button = “”;
var json = “”;
var location = 2;

fs.stat(filepath, function(err, stats){
if (stats.isFile()) {
var filename = path.basename(filepath);
var filenames = filename.split(’.’);
if (filenames === “json”) {
json=filename;
file = filenames.split(’’).substring(0, 1).toLocaleUpperCase() + filenames.split(’’).substring(1);
getConfigFile(filename, null);
}
}
else
if (stats.isDirectory()) {
// readFilesInDir(path.dirname(filepath)+"\"+ path.basename(filepath))
}
})
function getConfigFile(path, callback){
fs.readFile(path, ‘utf8’, function(err, json_string){
if (err) {
console.error(“Could not open oooconfig file:”, err.path);
}
else {
prase(JSON.parse(json_string).widgetTree);
}
});
}
function prase(widget){
dump(widget);
for (var i = 0; i < LableItemS.length; i++) {
txt += LableItemS*;
}
for (var i = 0; i < ImageViewItemS.length; i++) {
image += ImageViewItemS*;
}
for (var i = 0; i < ButtonItemS.length; i++) {
button += ButtonItemS*;
}
for (var i = 0; i < eventItemS.length; i++) {
event += eventItemS*;
}
console.log(txt);
console.log(image);
console.log(button);
console.log(event);
getFile(“TEM.txt”);

}

function dump(widget){
var name = widget"options"]“name”];
switch (widget"classname"]) {
case “Panel”:
break;
case “Label”:
case “TextArea”:
code_text(name);
break;
case “Button”:
case “TextButton”:
code_button(name);
break;
case “ImageView”:
code_image(name);
break;
case “TextField”:
code_textfield(name);
break;
case “CheckBox”:
code_checkbox(name);
break;
case “ListView”:
code_list(name);
break;
case “ScrollView”:
code_scrollview(name);
break;
}
for (var i = 0; i < widget"children"].length; i++) {
dump(widget"children"]*);
}
}
function code_text(name){
var string = “this.getWidget(”" + name + “”).setString("" + name+ “”);";
LableItemS.push(string);
}
function code_image(name){
var string = “this.getWidget(”" + name + “”).loadTexture("");";
ImageViewItemS.push(string);
}
function code_button(name){
var event =“on_”+name;
var strevent = event + “:function(sender, type){if (type == ccui.Widget.TOUCH_ENDE) { cc.log(” + event + “);}},”;
eventItemS.push(strevent);
var string = “this.getWidget(”" + name + “”).addTouchEventListener( this." + event + “,this);”;
ButtonItemS.push(string);
}
function code_textfield(name){
var event =“on_”+name;
var strevent = event + “:function(sender, type){” +
“if " +”(type == ccui.TextField. EVENT_ATTACH_WITH_IME) { cc.log(" + event + “);}” +
“if " +”(type == ccui.TextField. EVENT_DETACH_WITH_IME) { cc.log(" + event + “);}”+
“},”;
eventItemS.push(strevent);
var string = “this.getWidget(”" + name + “”)." +“addEventListenerTextField( this.” + event + “,this);”;
ButtonItemS.push(string);
console.log(string);
}
function code_checkbox(name){
var event =“on_”+name;
var strevent = event + “:function(sender, type){” +
“if " +”(type == ccui.CheckBox.EVENT_SELECTED) { cc.log(" + event + “);}” +
“if " +”(type == ccui.CheckBox.EVENT_UNSELECTED) { cc.log(" + event + “);}”+
“},”;
eventItemS.push(strevent);
var string = “this.getWidget(”" + name + “”)." +“addEventListenerTextField( this.” + event + “,this);”;
ButtonItemS.push(string);
console.log(string);
}
function code_scrollview(name){
var event =“on_”+name;
var line = “var m = 10;var locSize=cc.Size(100,200);”+
“locSize.height = item.getContentSize()*m;”+
“var innerSize = this.getWidget(”" + name + “”).getContentSize();"+
“this.getWidget(”" + name + “”).setInnerContainerSize(cc.size(Math.max(innerSize.width, locSize.width), Math.max(innerSize.height, locSize.height)));"+
“this.getWidget(”" + name + “”).getInnerContainer().setPosition(0, locSize.height - this.innerContainer.getContentSize().height);"+
“for(var i =0;i<m;i++){” +
“var Item=item.clone();”+
“var itemname = “item”+name+”"+i;"+
“Item.setName(itemname);”+
“this.getWidget(”" + name + “”).addWidget(Item);"+
“this.getWidget(”" + name + “”).getWidget(itemname).tag=i;" +
“this.getWidget(”" + name + “”).getWidget(itemname).addTouchEventListener( this." + event + “,this);”+
“}”;
ImageViewItemS.push(line);
var strevent = event + “:function(sender, type){if (type == ccui.Widget.TOUCH_ENDE) { cc.log(” + event+“sender.tag);}},”;
eventItemS.push(strevent);
}
function code_list(name){
var event ="on
"+name;
var line1 = “this.getWidget(”" + name + “”).setItemModel("");";
var line2 = “for(var i =0;i<5;i++){” +
“this.getWidget(”" + name + “”).pushBackDefaultItem("");" +
“this.getWidget(”" + name + “”).getItem(i).tag=i;" +
“this.getWidget(”" + name + “”).getItem(i).addTouchEventListener( this." + event + “,this);”+
“}”;
var string = line1 +line2;
ImageViewItemS.push(string);
var strevent = event + “:function(sender, type){if (type == ccui.Widget.TOUCH_ENDE) { cc.log(” + event+“sender.tag);}},”;
eventItemS.push(strevent);
console.log(string);
}
function getFile(path){
fs.readFile(path, ‘utf8’, function(err, json_string){
if (err) {
console.error(“Could not open config file:”, err.path);
}
else {
var js = json_string.replace(/\View/g, file + “View”);
js = js.replace(/JSON/, json);
js = js.replace(/BUTTON/, button);
js = js.replace(/\EVENT/, event);
js = js.replace(/\IMAGE/, image);
js = js.replace(/\TXT/, txt);
console.log(js);
var filename =file.toLocaleLowerCase() + “view” + “.js”;
fs.writeFile(filename, js);

}
});
}
}
function getFile(path){
fs.readFile(path, ‘utf8’, function(err, json_string){
if (err) {
console.error(“Could not open config file:”, err.path);
}
else {
var js = json_string.replace(/\View/g, file + “View”);
js = js.replace(/JSON/, json);
js = js.replace(/BUTTON/, button);
js = js.replace(/\EVENT/, event);
js = js.replace(/\IMAGE/, image);
js = js.replace(/\TXT/, txt);
console.log(js);
var filename =file.toLocaleLowerCase() + “view” + “.js”;
fs.writeFile(filename, js);

}
});
}
readFilesInDir(path.dirname(rootPath));******


界面模板文件
var g_View = null;
var View = ccui.Widget.extend({
init: function(){var bRet = false;
if (this._super()) {
if (‘keyboard’ in sys.capabilities)
this.setKeyboardEnabled(true);
if (‘mouse’ in sys.capabilities)
this.setMouseEnabled(true);
if (‘touches’ in sys.capabilities)
this.setTouchEnabled(true);
this.addWidget(ccs.uiReader.widgetFromJsonFile(“JSON”));
this.initaddlisitener();
// this.initUI();
bRet = true;
}

    return bRet;
},

initUI: function(){
   TXT
   //---------------下面是图片
   IMAGE
},
initaddlisitener: function(){
   BUTTON
},
EVENT

});

View.instance = function(){
if (g_View == null) {
g_View = View.create();
}
return g_View;
};

View.create = function(){
var sg = new View();
if (sg && sg.init()) {
return sg;
}
return null;
};
View.destroy = function(){
if (g_View != null) {
g_View.removeFromParent(false);
g_View = null;
}
};

欢迎大家关注好友的游戏:叮咚西游%url%******

第一次发帖折腾了半天,这个是压缩包

不知所以然。不知道有什么用。好像很历害的样子。

做什么的?

好像好厉害的样子,楼主能说说有什么用的么?