diff --git a/_server/css/editor.css b/_server/css/editor.css index 13e74df7..b878cc2f 100644 --- a/_server/css/editor.css +++ b/_server/css/editor.css @@ -190,7 +190,7 @@ body{ .gameCanvas { position: absolute; } -#dataSelection{ +#dataSelection , .appendSelection{ position: absolute; /* top:0; left:320px; */ diff --git a/_server/css/editor_mode.css b/_server/css/editor_mode.css index f5ffcdab..a3c232c9 100644 --- a/_server/css/editor_mode.css +++ b/_server/css/editor_mode.css @@ -13,7 +13,7 @@ .leftTab > :first-child{margin-top:5px;} .leftTab > :last-child{margin-bottom:5px;} -#left99 { +#left1 { left: 5px; top: 650px; width: 435px; diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 4bbe60af..017937b1 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -3,14 +3,14 @@ function editor_mode(){ 'loc':'left2', 'emenyitem':'left3', 'floor':'left4', - 'tower':'left5', - 'test':'left99' + 'tower':'left5' } this._ids={} this.dom={} this.actionList=[]; this.mode=''; this.info={}; + this.appendPic={}; } editor_mode.prototype.init = function(callback){ @@ -23,6 +23,8 @@ editor_mode.prototype.init = function(callback){ if (Boolean(callback))callback(); } +///////////////////////////////////////////////////////////////////////////// + editor_mode.prototype.objToTable = function(obj,commentObj){ var outstr=["\n条目注释值\n"]; var guids=[]; @@ -242,6 +244,8 @@ editor_mode.prototype.tower = function(callback){ if (Boolean(callback))callback(); } +///////////////////////////////////////////////////////////////////////////// + editor_mode.prototype.listen = function(callback){ var newIdIdnum = document.getElementById('newIdIdnum'); @@ -251,7 +255,7 @@ editor_mode.prototype.listen = function(callback){ var idnum = parseInt(newIdIdnum.children[1].value); editor_file.changeIdAndIdnum(editor,id,idnum,editor_mode.info,function(err){ if(err){printe(err);throw(err)} - printf('添加id的idnum成功'); + printe('添加id的idnum成功,请F5刷新编辑器'); }); } } @@ -288,6 +292,147 @@ editor_mode.prototype.listen = function(callback){ }); } + var ratio=1; + var appendPicCanvas = document.getElementById('appendPicCanvas'); + var bg = appendPicCanvas.children[0]; + var source = appendPicCanvas.children[1]; + var picClick = appendPicCanvas.children[2]; + var sprite = appendPicCanvas.children[3]; + var appendPicSelection = document.getElementById('appendPicSelection'); + + var selectAppend = document.getElementById('selectAppend'); + var selectAppend_str=[]; + ["terrains", "animates", "enemys", "items", "npcs"].forEach(function(image){ + selectAppend_str.push(["\n'].join('')); + }); + selectAppend.innerHTML=selectAppend_str.join(''); + selectAppend.onchange = function(){ + var value = selectAppend.value; + editor_mode.appendPic.imageName = value; + var img = editor.material.images[value]; + editor_mode.appendPic.toImg = img; + var num = ~~img.width/32; + editor_mode.appendPic.num = num; + editor_mode.appendPic.index = 0; + var selectStr = ''; + for(var ii=0;ii=num)editor_mode.appendPic.index=ii+1-num; + else editor_mode.appendPic.index++; + editor_mode.appendPic.selectPos[ii]=pos; + appendPicSelection.children[ii].style=[ + 'left:',pos.x*32,'px;', + 'top:',pos.y*32,'px' + ].join(''); + } + + var appendConfirm = document.getElementById('appendConfirm'); + appendConfirm.onclick = function(){ + var sprited = sprite.getContext('2d'); + //sprited.drawImage(img, 0, 0); + var height = editor_mode.appendPic.toImg.height; + var sourced = source.getContext('2d'); + for(var ii=0,v;v=editor_mode.appendPic.selectPos[ii];ii++){ + var imgData=sourced.getImageData(v.x*32,v.y*32,32,32); + sprited.putImageData(imgData,ii*32,height); + } + var imgbase64 = sprite.toDataURL().split(',')[1]; + fs.writeFile('./project/images/'+editor_mode.appendPic.imageName+'.png',imgbase64,'base64',function(err,data){ + if(err){printe(err);throw(err)} + printe('追加素材成功,请刷新编辑器'); + }); + } + if (Boolean(callback))callback(); } diff --git a/editor.html b/editor.html index e408332d..1617c843 100644 --- a/editor.html +++ b/editor.html @@ -32,39 +32,26 @@ -
-
-

测试用标签页

-
- - - - - - - - - -
条目注释aaa
变量名字符串可能显示不全但是hover时通过span title='xxx'来显示高度以此为准
此处是利用slice实现
-
-
- - - - - - - -
条目注释
-
-
- +
+

追加素材

+

+ + + +

+
+ + + + +
+
1
+
  2
+
    3
+
      4
-
+

地图选点

0,0

diff --git a/libs/core.js b/libs/core.js index 0a1b1560..62235906 100644 --- a/libs/core.js +++ b/libs/core.js @@ -216,6 +216,11 @@ core.prototype.init = function (coreData) { core.platform.fileReader.onload = function () { var content=core.platform.fileReader.result; var obj=null; + if(content.slice(0,4)==='data'){ + if (core.isset(core.platform.successCallback)) + core.platform.successCallback(content); + return; + } try { obj=JSON.parse(content); if (core.isset(obj)) { @@ -4952,7 +4957,7 @@ core.prototype.isset = function (val) { } ////// 读取一个本地文件内容 ////// -core.prototype.readFile = function (success, error) { +core.prototype.readFile = function (success, error, readType) { // step 0: 不为http/https,直接不支持 if (!core.platform.isOnline) { @@ -4979,7 +4984,8 @@ core.prototype.readFile = function (success, error) { core.platform.errorCallback(); return; } - core.platform.fileReader.readAsText(core.platform.fileInput.files[0]); + if(!readType)core.platform.fileReader.readAsText(core.platform.fileInput.files[0]); + else core.platform.fileReader.readAsDataURL(core.platform.fileInput.files[0]); core.platform.fileInput.value = ''; } }