diff --git a/_server/editor.js b/_server/editor.js index c2843696..ea23b9c7 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -20,7 +20,7 @@ function editor() { chooseThis : document.getElementById('chooseThis'), chooseInRight : document.getElementById('chooseInRight'), copyLoc : document.getElementById('copyLoc'), - moveLoc : document.getElementById('moveLoc'), + pasteLoc : document.getElementById('pasteLoc'), clearEvent : document.getElementById('clearEvent'), clearLoc : document.getElementById('clearLoc'), brushMod:document.getElementById('brushMod'), @@ -80,9 +80,6 @@ function editor() { scrollBarHeight :0, folded:false, foldPerCol: 50, - // 画图区菜单 - lastRightButtonPos:[{x:0,y:0},{x:0,y:0}], - lastCopyedInfo : [null, null], // ratio : 1, // blockly转义 diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index d4cee0f8..1d319b71 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -1172,9 +1172,8 @@ Blockly.FieldColour.prototype.createWidget_ = function() { setTimeout(function () { document.getElementById("colorPicker").value = getValue(); - window.jsColorPicker.confirm = setValue; // 设置位置 - triggerColorPicker(Blockly.WidgetDiv.DIV.style.left, Blockly.WidgetDiv.DIV.style.top); + openColorPicker(Blockly.WidgetDiv.DIV.style.left, Blockly.WidgetDiv.DIV.style.top, setValue); }); return document.createElement('table'); diff --git a/_server/editor_listen.js b/_server/editor_listen.js index 7a3b83b1..ebbf0369 100644 --- a/_server/editor_listen.js +++ b/_server/editor_listen.js @@ -32,7 +32,7 @@ editor_listen_wrapper = function (editor) { editor.dom.chooseThis.onmousedown = editor.uifunctions.chooseThis_click editor.dom.chooseInRight.onmousedown = editor.uifunctions.chooseInRight_click editor.dom.copyLoc.onmousedown = editor.uifunctions.copyLoc_click - editor.dom.moveLoc.onmousedown = editor.uifunctions.moveLoc_click + editor.dom.pasteLoc.onmousedown = editor.uifunctions.pasteLoc_click editor.dom.clearEvent.onmousedown = editor.uifunctions.clearEvent_click editor.dom.clearLoc.onmousedown = editor.uifunctions.clearLoc_click @@ -130,8 +130,8 @@ editor_listen_wrapper = function (editor) { editor.dom.chooseInRight.onmousedown = null editor.dom.copyLoc.ontouchstart = editor.dom.copyLoc.onmousedown editor.dom.copyLoc.onmousedown = null - editor.dom.moveLoc.ontouchstart = editor.dom.moveLoc.onmousedown - editor.dom.moveLoc.onmousedown = null + editor.dom.pasteLoc.ontouchstart = editor.dom.pasteLoc.onmousedown + editor.dom.pasteLoc.onmousedown = null editor.dom.clearLoc.ontouchstart = editor.dom.clearLoc.onmousedown editor.dom.clearLoc.onmousedown = null diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index f2f850ac..854514d2 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -342,12 +342,7 @@ editor_mappanel_wrapper = function (editor) { * 显示右键菜单 */ editor.uifunctions.showMidMenu = function (x, y) { - editor.uivalues.lastRightButtonPos = JSON.parse(JSON.stringify( - [editor.pos, editor.uivalues.lastRightButtonPos[0]] - )); // --- copy - editor.uivalues.lastCopyedInfo = [editor.copyFromPos(), editor.uivalues.lastCopyedInfo[0]]; - var locStr = '(' + editor.uivalues.lastRightButtonPos[1].x + ',' + editor.uivalues.lastRightButtonPos[1].y + ')'; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; @@ -386,8 +381,8 @@ editor_mappanel_wrapper = function (editor) { else editor.dom.extraEvent.style.display = 'none'; editor.dom.chooseThis.children[0].innerHTML = '选中此点' + '(' + editor.pos.x + ',' + editor.pos.y + ')' - editor.dom.copyLoc.children[0].innerHTML = '复制事件' + locStr + '到此处'; - editor.dom.moveLoc.children[0].innerHTML = '交换事件' + locStr + '与此事件的位置'; + editor.dom.copyLoc.children[0].innerHTML = '复制此事件'; + editor.dom.pasteLoc.children[0].innerHTML = '粘贴到此事件'; editor.dom.midMenu.style = 'top:' + (y + scrollTop) + 'px;left:' + (x + scrollLeft) + 'px;'; } @@ -568,34 +563,39 @@ editor_mappanel_wrapper = function (editor) { editor.uifunctions.copyLoc_click = function (e) { editor.uifunctions.hideMidMenu(); e.stopPropagation(); + e.preventDefault(); + editor_mode.onmode(''); + editor.uivalues.copyedInfo = editor.copyFromPos(); + printf('该点事件已复制'); + return; + } + + /** + * editor.dom.pasteLoc.onmousedown + * 菜单 移动此事件 + */ + editor.uifunctions.pasteLoc_click = function (e) { + editor.uifunctions.hideMidMenu(); + e.stopPropagation(); + e.preventDefault(); + if (!editor.uivalues.copyedInfo) { + printe("没有复制的事件"); + return; + } editor.savePreMap(); editor_mode.onmode(''); - var now = editor.pos, last = editor.uivalues.lastRightButtonPos[1]; - if (now.x == last.x && now.y == last.y) return; - editor.pasteToPos(editor.uivalues.lastCopyedInfo[1]); + editor.pasteToPos(editor.uivalues.copyedInfo); editor.updateMap(); editor.file.saveFloorFile(function (err) { if (err) { printe(err); throw (err) } - ; printf('复制事件成功'); + ; printf('粘贴到事件成功'); editor.uifunctions.unhighlightSaveFloorButton(); editor.drawPosSelection(); }); - } - - /** - * editor.dom.moveLoc.onmousedown - * 菜单 移动此事件 - */ - editor.uifunctions.moveLoc_click = function (e) { - editor.uifunctions.hideMidMenu(); - e.stopPropagation(); - editor.savePreMap(); - editor_mode.onmode(''); - editor.exchangePos(editor.pos, editor.uivalues.lastRightButtonPos[1]); - editor.uifunctions.unhighlightSaveFloorButton(); + return; } /** diff --git a/_server/editor_table.js b/_server/editor_table.js index d36d1da2..1e2e9e93 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -412,6 +412,7 @@ editor_table_wrapper = function (editor) { if (cobj._type === 'event') editor_blockly.import(guid, { type: cobj._event }); if (cobj._type === 'textarea') editor_multi.import(guid, { lint: cobj._lint, string: cobj._string }); if (cobj._type === 'material') editor.table.selectMaterial(input, cobj); + if (cobj._type === 'color') editor.table.selectColor(input); } /** @@ -426,6 +427,7 @@ editor_table_wrapper = function (editor) { if (cobj._type === 'event') editor_blockly.import(guid, { type: cobj._event }); if (cobj._type === 'textarea') editor_multi.import(guid, { lint: cobj._lint, string: cobj._string }); if (cobj._type === 'material') editor.table.selectMaterial(input, cobj); + if (cobj._type === 'color') editor.table.selectColor(input); } else if (editor_mode.doubleClickMode === 'add') { editor_mode.doubleClickMode = 'change'; editor.table.addfunc(guid, obj, commentObj, thisTr, input, field, cobj, modeNode) @@ -446,6 +448,21 @@ editor_table_wrapper = function (editor) { }) } + editor_table.prototype.selectColor = function (input) { + if (input.value != null) { + var str = input.value.toString().replace(/[^\d.,]/g, ''); + if (/^(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d),(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d),(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(,0(\.\d+)?|,1)?$/.test(str)) { + document.getElementById('colorPicker').value = str; + } + } + var boundingBox = input.getBoundingClientRect(); + openColorPicker(boundingBox.x, boundingBox.y + boundingBox.height, function (value) { + value = value.replace(/[^\d.,]/g, ''); + input.value = '[' + value +']'; + input.onchange(); + }) + } + /** * 删除表格项 */ diff --git a/_server/table/comment.js b/_server/table/comment.js index a10b93aa..ca63b022 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -465,7 +465,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "color": { "_leaf": true, - "_type": "textarea", + "_type": "color", "_docs": "色调", "_data": "该层的默认画面色调。本项可不写(代表无色调),如果写需要是一个RGBA数组如[255,0,0,0.3]" }, diff --git a/_server/thirdparty/jsColor.js b/_server/thirdparty/jsColor.js index cbd9dee6..0d85e920 100644 --- a/_server/thirdparty/jsColor.js +++ b/_server/thirdparty/jsColor.js @@ -121,7 +121,7 @@ colorPickers.current = colorPickers[index]; } }, - createListener = function(e) { + createListener = function() { elm = document.getElementById("colorPicker"); var input = elm, position = window.ColorPicker.getOrigin(input), @@ -268,9 +268,19 @@ jsColorPicker('input.color', { size: 1, }); -function openColorFromButton() { - delete window.jsColorPicker.confirm; - triggerColorPicker('414px', '53px'); +function openColorPicker(px, py, callback) { + window.jsColorPicker.confirm = callback; + var colorPanel = document.getElementById('colorPanel'); + if (colorPanel.style.display=='none' && px != null && py != null) { + colorPanel.style.display = "inline-block"; + colorPanel.style.left = px + 'px'; + colorPanel.style.top = py + 'px'; + window.jsColorPicker.create(); + } + else { + colorPanel.style.display = 'none'; + delete window.jsColorPicker.confirm; + } } function confirmColor() { @@ -287,22 +297,8 @@ function confirmColor() { colorPicker.select(); document.execCommand("Copy"); } - - triggerColorPicker(); -} - -function triggerColorPicker(left, top) { - var colorPanel = document.getElementById('colorPanel'); - if (colorPanel.style.display=='none' && left && top) { - colorPanel.style.display = "inline-block"; - colorPanel.style.left = left; - colorPanel.style.top = top; - window.jsColorPicker.create(); - } - else { - colorPanel.style.display = 'none'; - delete window.jsColorPicker.confirm; - } + colorPanel.style.display = 'none'; + delete window.jsColorPicker.confirm; } // ------ AutoCompletion ------ diff --git a/editor-mobile.html b/editor-mobile.html index ac036b3f..e73794aa 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -229,10 +229,6 @@ - @@ -250,6 +246,10 @@ +
@@ -368,7 +368,7 @@ - +
diff --git a/editor.html b/editor.html index eaa90de5..daba251b 100644 --- a/editor.html +++ b/editor.html @@ -224,10 +224,6 @@ - @@ -245,6 +241,10 @@ +
@@ -391,7 +391,7 @@ - +
diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index c9ebdcbd..c2c2bc15 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -61,7 +61,7 @@ (已完成!) 难度分歧的图块(颜色,含SL界面) (已完成!) 装备同时加属性和比例 (已完成!) removeMap和resumeMap -右键图块选择复制/粘贴事件 +(已完成!) 右键图块选择复制/粘贴事件 (已完成!) showImage, drawImage,立绘等加上对称选项 更多的图块blockly化 勇士帧抖动