From 41ce44fc0ee5dce23dfa801d33940240bf74e416 Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Wed, 19 May 2021 21:32:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=8B=E6=9C=BA=E7=AB=AF?= =?UTF-8?q?=E6=96=87=E6=9C=AC=E6=A1=86=E5=93=8D=E5=BA=94=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Zframework/init.lua | 12 +++++------ Zframework/widget.lua | 13 +++++++----- parts/scenes/net_game.lua | 44 +++++++++++++++++++++------------------ 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/Zframework/init.lua b/Zframework/init.lua index 77e5e926..b13bbc44 100644 --- a/Zframework/init.lua +++ b/Zframework/init.lua @@ -160,6 +160,7 @@ function love.touchpressed(id,x,y) if SCN.swapping then return end if not touching then touching=id + WIDGET.unFocus(true) love.touchmoved(id,x,y,0,0) end x,y=xOy:inverseTransformPoint(x,y) @@ -172,14 +173,10 @@ function love.touchmoved(_,x,y,dx,dy) x,y=xOy:inverseTransformPoint(x,y) if SCN.touchMove then SCN.touchMove(x,y,dx/SCR.k,dy/SCR.k)end if WIDGET.sel then - if touching then - WIDGET.drag(x,y,dx,dy) - end + if touching then WIDGET.drag(x,y,dx,dy)end else WIDGET.cursorMove(x,y) - if not WIDGET.sel then - touching=false - end + if not WIDGET.sel then touching=false end end end function love.touchreleased(id,x,y) @@ -188,8 +185,9 @@ function love.touchreleased(id,x,y) if id==touching then WIDGET.press(x,y,1) WIDGET.release(x,y) - touching=false + WIDGET.cursorMove(x,y) WIDGET.unFocus() + touching=false end if SCN.touchUp then SCN.touchUp(x,y)end if(x-lastX)^2+(y-lastY)^2<62 then diff --git a/Zframework/widget.lua b/Zframework/widget.lua index 5e59a66c..6f77dd9b 100644 --- a/Zframework/widget.lua +++ b/Zframework/widget.lua @@ -1083,9 +1083,12 @@ function WIDGET.focus(W) kb.setTextInput(true,0,y1,1,1) end end -function WIDGET.unFocus() - if WIDGET.sel and WIDGET.sel.type=='inputBox'then kb.setTextInput(false)end - WIDGET.sel=false +function WIDGET.unFocus(force) + local W=WIDGET.sel + if W and(force or not W.keepFocus)then + if W.type=='inputBox'then kb.setTextInput(false)end + WIDGET.sel=false + end end function WIDGET.cursorMove(x,y) @@ -1110,8 +1113,8 @@ function WIDGET.drag(x,y,dx,dy) if not W then return end if W.type=='slider'or W.type=='textBox'then W:drag(x,y,dx,dy) - elseif not W:isAbove(x,y)and not WIDGET.sel.keepFocus then - WIDGET.unFocus() + elseif not W:isAbove(x,y)then + WIDGET.unFocus(true) end end function WIDGET.release(x,y) diff --git a/parts/scenes/net_game.lua b/parts/scenes/net_game.lua index 24d971a7..3528d724 100644 --- a/parts/scenes/net_game.lua +++ b/parts/scenes/net_game.lua @@ -26,6 +26,25 @@ local function _gotoSetting() SCN.go('setting_game') end end +local function _quit() + if TIME()-lastBackTime<1 then + NET.signal_quit() + else + lastBackTime=TIME() + LOG.print(text.sureQuit,'warn') + end +end +local function _switchChat() + if inputBox.hide then + textBox.hide=false + inputBox.hide=false + WIDGET.focus(inputBox) + else + textBox.hide=true + inputBox.hide=true + WIDGET.unFocus(true) + end +end local scene={} @@ -97,12 +116,7 @@ function scene.keyDown(key) if not inputBox.hide then scene.keyDown("switchChat") else - if TIME()-lastBackTime<1 then - NET.signal_quit() - else - lastBackTime=TIME() - LOG.print(text.sureQuit,'warn') - end + _quit() end elseif key=="return"then local mes=STRING.trim(inputBox:getText()) @@ -111,20 +125,10 @@ function scene.keyDown(key) NET.sendMessage(mes) inputBox:clear() elseif #EDITING==0 then - scene.keyDown("switchChat") + _switchChat() end else - scene.keyDown("switchChat") - end - elseif key=="switchChat"then - if inputBox.hide then - textBox.hide=false - inputBox.hide=false - WIDGET.focus(inputBox) - else - textBox.hide=true - inputBox.hide=true - WIDGET.unFocus() + _switchChat() end elseif not inputBox.hide then print(1) @@ -371,8 +375,8 @@ scene.widgetList={ not netPLY.getSelfReady() or NET.getlock('ready') end}, - WIDGET.newKey{name="hideChat",fText="...",x=380,y=35,w=60,font=35,code=pressKey"switchChat"}, - WIDGET.newKey{name="quit",fText="X",x=900,y=35,w=60,font=40,code=pressKey"escape"}, + WIDGET.newKey{name="hideChat",fText="...",x=380,y=35,w=60,font=35,code=_switchChat}, + WIDGET.newKey{name="quit",fText="X",x=900,y=35,w=60,font=40,code=_quit}, } return scene \ No newline at end of file