简单说下设计思路(前提假设你已经了解Drag组件和DragGroup的用法)……
将DragGroup内的Drag组件的 drag_raise 设置为 True,拖动的时候就会显示在组内最上层。DragGroup是否在UI层的问题,请在界面设计层面处理。
要保留拖动后Drag组件的位置,需要定义 dragged 回调函数。最简单的方法是先定义全局变量(x, y),在 dragged 回调函数中把Drag组件的坐标值写入到那个全局变量中。同时,使用了该Drag组件的界面(screen)使用全局变量作为入参,Drag组件的初始位置使用入参变量。
[RenPy] 纯文本查看 复制代码 default dragPosDict = {"drag1":(0, 0), "drag2":(100, 100)}
init python:
def change_drag_pos(drags, drop):
if not drop:
return
if(dragPosDict.get(drags[0].drag_name)):
dragPosDict[drags[0].drag_name] = (drags[0].x, drags[0].y)
return True
screen draggroup_test(dragPosDict):
draggroup:
drag:
drag_name "drag1"
child "icon.png"
drag_raise True
dragged change_drag_pos
pos dragPosDict["drag1"]
drag:
drag_name "drag2"
child "icon.png"
drag_raise True
dragged change_drag_pos
pos dragPosDict["drag2"]
以上代码只是参考。拖拽组件系统比较复杂,要做出有实用性的东西很花时间……
|