diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 39984f46..017937b1 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -10,6 +10,7 @@ function editor_mode(){ this.actionList=[]; this.mode=''; this.info={}; + this.appendPic={}; } editor_mode.prototype.init = function(callback){ @@ -254,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刷新编辑器'); }); } } @@ -291,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 4a8f4d6b..1617c843 100644 --- a/editor.html +++ b/editor.html @@ -35,15 +35,16 @@

追加素材

- + - +

-
+
+ -
+
1
  2
    3
diff --git a/libs/core.js b/libs/core.js index 64c4cdef..cf3d76dd 100644 --- a/libs/core.js +++ b/libs/core.js @@ -215,6 +215,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)) { @@ -4949,7 +4954,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) { @@ -4976,7 +4981,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 = ''; } }