控制¶
Inherits: CanvasItem < Node < Object
继承人: BaseButton , ColorRect , Container , GraphEdit , ItemList , Label , LineEdit , NinePatchRect , Panel , Popup , Range , ReferenceRect , RichTextLabel , Separator , Tabs , TextEdit , TextureRect , Tree , VideoPlayer
类别: 核心
简要说明¶
所有用户界面节点都继承自控件。控件的定位点和页边距相对于其父控件调整其位置和大小。
属性¶
0.0 |
||
0.0 |
||
0.0 |
||
0.0 |
||
0 |
||
节点路径(“”) |
||
节点路径(“”) |
||
节点路径(“”) |
||
节点路径(“”) |
||
节点路径(“”) |
||
节点路径(“”) |
||
1 |
||
1 |
||
“ |
||
0.0 |
||
0.0 |
||
0.0 |
||
0.0 |
||
0 |
||
0 |
||
假 |
||
矢量2(0,0) |
||
矢量2(0,0) |
||
矢量2(0,0) |
||
0.0 |
||
矢量2(1,1) |
||
矢量2(0,0) |
||
1 |
||
1.0 |
||
1 |
||
方法¶
信号¶
focus_entered ( )
当节点获得键盘焦点时发出。
focus_exited ( )
当节点失去键盘焦点时发出。
gui_input ( InputEvent event )
当节点接收到 InputEvent .
minimum_size_changed ( )
当节点的最小大小更改时发出。
modal_closed ( )
当模式 Control
已关闭。见 show_modal .
mouse_entered ( )
当鼠标进入控件时发出 Rect
区域,前提是 mouse_filter 让事件到达它。
mouse_exited ( )
当鼠标离开控件时发出 Rect
区域,前提是 mouse_filter 让事件到达它。
resized ( )
控件更改大小时发出。
size_flags_changed ( )
当其中一个大小标志更改时发出。见 size_flags_horizontal 和 size_flags_vertical .
枚举¶
枚举 FocusMode :
FOCUS_NONE = 0 ---节点无法获取焦点。与一起使用 focus_mode .
FOCUS_CLICK = 1 ---节点只能通过鼠标点击来获取焦点。与一起使用 focus_mode .
FOCUS_ALL = 2 ---该节点可以通过鼠标单击或使用键盘上的箭头和制表键来获取焦点。与一起使用 focus_mode .
枚举 CursorShape :
CURSOR_ARROW = 0 ---当用户悬停节点时,显示系统的箭头鼠标光标。与一起使用 mouse_default_cursor_shape .
CURSOR_IBEAM = 1 ---用户悬停节点时,显示系统的工字梁鼠标光标。工字钢指针的形状类似于“I”。它告诉用户可以突出显示或插入文本。
CURSOR_POINTING_HAND = 2 ---用户悬停节点时,显示系统的鼠标指针。
CURSOR_CROSS = 3 ---用户悬停节点时,显示系统的鼠标光标。
CURSOR_WAIT = 4 ---当用户悬停在节点上时,显示系统的等待鼠标光标,通常是沙漏。
CURSOR_BUSY = 5 ---用户悬停节点时,显示系统繁忙的鼠标光标。通常是沙漏。
CURSOR_DRAG = 6 ---当用户悬停在节点上时,显示系统的拖动鼠标光标,通常是闭合的拳头或十字符号。它告诉用户他们当前正在拖动一个项目,如场景停靠中的节点。
CURSOR_CAN_DROP = 7 ---当用户悬停节点时,显示系统的鼠标光标。它可以是一只张开的手。它告诉用户,他们可以放下当前正在抓取的项目,就像场景停靠中的节点一样。
CURSOR_FORBIDDEN = 8 ---用户悬停节点时,显示系统禁止使用的鼠标光标。通常是一个交叉的圆。
CURSOR_VSIZE = 9 ---当用户悬停节点时,显示系统的垂直调整鼠标光标。双头垂直箭头。它告诉用户可以垂直调整窗口或面板的大小。
CURSOR_HSIZE = 10 ---当用户悬停节点时,显示系统的水平调整鼠标光标。双头水平箭头。它告诉用户可以水平调整窗口或面板的大小。
CURSOR_BDIAGSIZE = 11 ---当用户悬停节点时,显示系统的窗口调整鼠标光标大小。光标是一个从左下到右上的双头箭头。它告诉用户可以水平和垂直调整窗口或面板的大小。
CURSOR_FDIAGSIZE = 12 ---当用户悬停节点时,显示系统的窗口调整鼠标光标大小。光标是一个从左上到右下的双头箭头,与 CURSOR_BDIAGSIZE . 它告诉用户可以水平和垂直调整窗口或面板的大小。
CURSOR_MOVE = 13 ---当用户悬停节点时,显示系统的移动鼠标光标。它显示两个90度角的双头箭头。它告诉用户他们可以自由移动UI元素。
CURSOR_VSPLIT = 14 ---用户悬停节点时,显示系统的垂直拆分鼠标光标。在窗户上,它和 CURSOR_VSIZE .
CURSOR_HSPLIT = 15 ---用户悬停节点时,显示系统的水平拆分鼠标光标。在窗户上,它和 CURSOR_HSIZE .
CURSOR_HELP = 16 ---当用户悬停节点时,显示系统的帮助鼠标光标,一个问号。
枚举 LayoutPreset :
PRESET_TOP_LEFT = 0 ---将所有4个锚都捕捉到父控件边界的左上角。与一起使用 set_anchors_preset .
PRESET_TOP_RIGHT = 1 ---将所有4个锚都捕捉到父控件边界的右上角。与一起使用 set_anchors_preset .
PRESET_BOTTOM_LEFT = 2 ---将所有4个锚都捕捉到父控件边界的左下角。与一起使用 set_anchors_preset .
PRESET_BOTTOM_RIGHT = 3 ---将所有4个锚都捕捉到父控件边界的右下角。与一起使用 set_anchors_preset .
PRESET_CENTER_LEFT = 4 ---将所有4个锚点捕捉到父控件边界左边缘的中心。与一起使用 set_anchors_preset .
PRESET_CENTER_TOP = 5 ---将所有4个锚点捕捉到父控件边界上边缘的中心。与一起使用 set_anchors_preset .
PRESET_CENTER_RIGHT = 6 ---将所有4个锚点捕捉到父控件边界右边缘的中心。与一起使用 set_anchors_preset .
PRESET_CENTER_BOTTOM = 7 ---将所有4个锚点都捕捉到父控件边界下边缘的中心。与一起使用 set_anchors_preset .
PRESET_CENTER = 8 ---将所有4个锚点捕捉到父控件边界的中心。与一起使用 set_anchors_preset .
PRESET_LEFT_WIDE = 9 ---将所有4个锚点捕捉到父控件的左边缘。左边距变为相对于左边缘,上边距变为相对于节点父级的左上角。与一起使用 set_anchors_preset .
PRESET_TOP_WIDE = 10 ---将所有4个锚点捕捉到父控件的上边缘。左边距相对于左上角、上边缘相对于上边缘、右边缘相对于节点父节点的右上角。与一起使用 set_anchors_preset .
PRESET_RIGHT_WIDE = 11 ---将所有4个锚点都对齐到父控件的右边缘。右边距变为相对于右边缘,上边距变为相对于节点父节点右上角。与一起使用 set_anchors_preset .
PRESET_BOTTOM_WIDE = 12 ---将所有4个锚点捕捉到父控件的下边缘。左边距变为相对于左下角,下边缘变为相对于下边缘,右边缘变为相对于节点父节点右下角。与一起使用 set_anchors_preset .
PRESET_VCENTER_WIDE = 13 ---将所有4个锚点都捕捉到一条垂直线,该垂直线将父控件切成两半。与一起使用 set_anchors_preset .
PRESET_HCENTER_WIDE = 14 ---将所有4个锚点对齐到一条水平线,该水平线将父控件切成两半。与一起使用 set_anchors_preset .
PRESET_WIDE = 15 ---将所有4个锚点对齐到父控件的各个角。应用此预设和
Control
将适合其父控件。这相当于编辑器中的“完整矩形”布局选项。与一起使用 set_anchors_preset .
枚举 LayoutPresetMode :
PRESET_MODE_MINSIZE = 0
PRESET_MODE_KEEP_WIDTH = 1
PRESET_MODE_KEEP_HEIGHT = 2
PRESET_MODE_KEEP_SIZE = 3
枚举 SizeFlags :
SIZE_FILL = 1 ---告诉家长 Container 展开此节点的边界以填充所有可用空间,而不推送任何其他节点。与一起使用 size_flags_horizontal 和 size_flags_vertical .
SIZE_EXPAND = 2 ---告诉家长 Container 以使此节点占用您标记的轴上的所有可用空间。如果将多个相邻节点设置为展开,则它们将根据拉伸比共享空间。见 size_flags_stretch_ratio . 与一起使用 size_flags_horizontal 和 size_flags_vertical .
SIZE_EXPAND_FILL = 3 ---将节点的大小标志设置为“填充”和“展开”。有关更多信息,请参阅上面的2个常量。
SIZE_SHRINK_CENTER = 4 ---告诉家长 Container 使节点本身居中。它基于控件的边界框将控件居中,因此不使用填充或展开大小标志。与一起使用 size_flags_horizontal 和 size_flags_vertical .
SIZE_SHRINK_END = 8 ---告诉家长 Container 要使节点与其端部对齐,请在底部或右侧边缘对齐。它不适用于填充或展开大小标志。与一起使用 size_flags_horizontal 和 size_flags_vertical .
枚举 MouseFilter :
MOUSE_FILTER_STOP = 0 ---控件将通过以下方式接收鼠标按钮输入事件: _gui_input 如果单击。控制中心将收到 mouse_entered 和 mouse_exited 信号。这些事件将自动标记为已处理,并且不会进一步传播到其他控件。这也会导致其他控件中的信号阻塞。
MOUSE_FILTER_PASS = 1 ---控件将通过以下方式接收鼠标按钮输入事件: _gui_input 如果单击。控制中心将收到 mouse_entered 和 mouse_exited 信号。如果此控件不处理该事件,则将考虑父控件(如果有),依此类推,直到没有更多的父控件可以潜在地处理它。这也允许信号在其他控件中触发。即使没有任何控件处理它,事件仍将自动处理,因此不会激发未处理的输入。
MOUSE_FILTER_IGNORE = 2 ---控件不会通过以下方式接收鼠标按钮输入事件: _gui_input . 控件也不会接收 mouse_entered 也不 mouse_exited 信号。这不会阻止其他控件接收这些事件或触发信号。忽略的事件不会自动处理。
枚举 GrowDirection :
GROW_DIRECTION_BEGIN = 0 ---如果控件的最小大小更改为大于其在各自轴上的当前大小,则控件将向左或向上增长以弥补。
GROW_DIRECTION_END = 1 ---如果控件的最小大小更改为大于其在各自轴上的当前大小,则控件将向右或向下扩展以进行弥补。
GROW_DIRECTION_BOTH = 2 ---如果控件的最小大小更改为大于当前大小,则控件将在两个方向上平均增长以弥补。
枚举 锚 :
ANCHOR_BEGIN = 0 ---将4个锚的一侧之一捕捉到节点的原点
Rect
,在左上角。把它和一个anchor_*
成员变量,如 anchor_left . 要同时更改所有4个锚,请使用 set_anchors_preset .ANCHOR_END = 1 ---将4个锚的一侧之一捕捉到节点的末端
Rect
在右下角。把它和一个anchor_*
成员变量,如 anchor_left . 要同时更改所有4个锚,请使用 set_anchors_preset .
常量¶
NOTIFICATION_RESIZED = 40 ---节点更改大小时发送。使用 rect_size 以获得新尺寸。
NOTIFICATION_MOUSE_ENTER = 41 ---鼠标指针进入节点时发送。
NOTIFICATION_MOUSE_EXIT = 42 ---鼠标指针退出节点时发送。
NOTIFICATION_FOCUS_ENTER = 43 ---节点获取焦点时发送。
NOTIFICATION_FOCUS_EXIT = 44 ---节点失去焦点时发送。
NOTIFICATION_THEME_CHANGED = 45 ---当节点的 theme 更改,就在Godot重新绘制控件之前。当你调用
add_*_override
方法。NOTIFICATION_MODAL_CLOSE = 46 ---打开模式对话框关闭时发送。见 show_modal .
NOTIFICATION_SCROLL_BEGIN = 47 ---此节点位于 ScrollContainer 它已经开始滚动。
NOTIFICATION_SCROLL_END = 48 ---此节点位于 ScrollContainer 它已停止滚动。
描述¶
所有与UI相关的节点的基类。 Control
其特征是定义范围的边界矩形、相对于其父控件或当前视区的定位点位置以及表示定位点偏移的边距。当节点、其父节点或屏幕大小发生变化时,页边距自动更新。
有关Godot的UI系统、锚、页边距和容器的详细信息,请参阅手册中的相关教程。要构建灵活的UI,您需要混合继承自 Control
和 Container 节点。
用户界面节点和输入
godot首先通过调用 Node._input . Node._input 将事件沿节点树向下转发到鼠标光标下或键盘焦点上的节点。要做到这一点,它需要 MainLoop._input_event . 呼叫 accept_event 因此没有其他节点接收到该事件。一旦你接受了一个输入,它就会被处理。 Node._unhandled_input 不会处理它。
只有一个 Control
节点可以在键盘焦点处。只有处于焦点的节点才会接收键盘事件。要获得焦点,请致电 grab_focus . Control
当另一个节点抓取节点或隐藏该节点时,节点将失去焦点。
集合 mouse_filter 到 MOUSE_FILTER_IGNORE 告诉 Control
忽略鼠标或触摸事件的节点。如果你把一个图标放在一个按钮的顶部,你就需要它。
Theme 资源更改控件的外观。如果你改变 Theme 在一 Control
节点,它影响它的所有子节点。若要重写主题的某些参数,请调用 add_*_override
方法,比如 add_font_override . 可以使用检查器覆盖主题。
属性描述¶
float anchor_bottom
违约 |
0.0 |
吸气剂 |
获取锚()。 |
将节点的下边缘锚定到其父控件的原点、中心或末端。当节点移动或更改大小时,它会更改下边距的更新方式。您可以使用 ANCHOR_*
常量以方便使用。
float anchor_left
违约 |
0.0 |
吸气剂 |
获取锚()。 |
将节点的左边缘锚定到其父控件的原点、中心或末端。它更改节点移动或更改大小时左边距的更新方式。您可以使用 ANCHOR_*
常量以方便使用。
float anchor_right
违约 |
0.0 |
吸气剂 |
获取锚()。 |
将节点的右边缘锚定到其父控件的原点、中心或末端。当节点移动或更改大小时,它会更改右边距的更新方式。您可以使用 ANCHOR_*
常量以方便使用。
float anchor_top
违约 |
0.0 |
吸气剂 |
获取锚()。 |
将节点的上边缘锚定到其父控件的原点、中心或末端。当节点移动或更改大小时,它会更改上边距的更新方式。您可以使用 ANCHOR_*
常量以方便使用。
FocusMode focus_mode
违约 |
0 |
设定器 |
设置焦点模式(值) |
吸气剂 |
获取焦点模式() |
控件的焦点访问模式(无、单击或全部)。只有一个控件可以同时聚焦,它将接收键盘信号。
NodePath focus_neighbour_bottom
违约 |
节点路径(“”) |
设定器 |
设置焦点邻居(值) |
吸气剂 |
获得焦点邻居 |
告诉Godot,如果用户按键盘上的向下箭头或默认情况下按游戏板上的向下箭头,它应该将键盘焦点放在哪个节点上。您可以通过编辑 ui_down
输入动作。节点必须是 Control
. 如果不设置此属性,Godot将焦点放在最近的 Control
到了这个的底部。
NodePath focus_neighbour_left
违约 |
节点路径(“”) |
设定器 |
设置焦点邻居(值) |
吸气剂 |
获得焦点邻居 |
告诉Godot如果用户按键盘上的左箭头或默认情况下按游戏板上的左箭头,它应该将键盘焦点放在哪个节点上。您可以通过编辑 ui_left
输入动作。节点必须是 Control
. 如果不设置此属性,Godot将焦点放在最近的 Control
在这个的左边。
NodePath focus_neighbour_right
违约 |
节点路径(“”) |
设定器 |
设置焦点邻居(值) |
吸气剂 |
获得焦点邻居 |
告诉Godot如果用户按键盘上的右箭头或默认情况下按游戏板上的右箭头,它应该将键盘焦点放在哪个节点上。您可以通过编辑 ui_right
输入动作。节点必须是 Control
. 如果不设置此属性,Godot将焦点放在最近的 Control
到了这个的底部。
NodePath focus_neighbour_top
违约 |
节点路径(“”) |
设定器 |
设置焦点邻居(值) |
吸气剂 |
获得焦点邻居 |
告诉Godot,如果用户按键盘上的上箭头或游戏板上的上箭头,默认情况下,应该将键盘焦点放在哪个节点上。您可以通过编辑 ui_top
输入动作。节点必须是 Control
. 如果不设置此属性,Godot将焦点放在最近的 Control
到了这个的底部。
NodePath focus_next
违约 |
节点路径(“”) |
设定器 |
设置下一个焦点(值) |
吸气剂 |
获得焦点下一个() |
告诉godot如果用户默认按下键盘上的tab键,它应该将键盘焦点放在哪个节点上。您可以通过编辑 ui_focus_next
输入动作。
如果未设置此属性,Godot将根据场景树中的周围节点选择“最佳猜测”。
NodePath focus_previous
违约 |
节点路径(“”) |
设定器 |
设置上一个焦点(值) |
吸气剂 |
获得焦点前一页() |
告诉godot如果用户默认按下键盘上的shift+tab键,它应该将键盘焦点放在哪个节点上。您可以通过编辑 ui_focus_prev
输入动作。
如果未设置此属性,Godot将根据场景树中的周围节点选择“最佳猜测”。
GrowDirection grow_horizontal
违约 |
1 |
设定器 |
设置成长方向(值) |
吸气剂 |
获取成长方向()。 |
如果控件的水平最小大小更改为大于其当前大小,则控制该控件在水平轴上的增长方向,因为控件必须始终至少为最小大小。
GrowDirection grow_vertical
违约 |
1 |
设定器 |
设置成长方向(值) |
吸气剂 |
获取增长方向()。 |
如果控件的垂直最小大小更改为大于其当前大小,则控制该控件在垂直轴上的增长方向,因为控件必须始终至少为最小大小。
String hint_tooltip
违约 |
“ |
设定器 |
设置工具提示(值) |
更改工具提示文本。当用户的鼠标光标在该控件上停留几分钟后,将显示工具提示,前提是 mouse_filter 属性不是 MOUSE_FILTER_IGNORE .
float margin_bottom
违约 |
0.0 |
设定器 |
设置边距(值) |
吸气剂 |
获取_Margin() |
节点下边缘与其父控件之间的距离,基于 anchor_bottom .
页边距通常由一个或多个父级控制 Container 节点,因此如果您的节点是 Container . 移动或调整节点大小时,页边距自动更新。
float margin_left
违约 |
0.0 |
设定器 |
设置边距(值) |
吸气剂 |
获取_Margin() |
节点左边缘与其父控件之间的距离,基于 anchor_left .
页边距通常由一个或多个父级控制 Container 节点,因此如果您的节点是 Container . 移动或调整节点大小时,页边距自动更新。
float margin_right
违约 |
0.0 |
设定器 |
设置边距(值) |
吸气剂 |
获取_Margin() |
节点右边缘与其父控件之间的距离,基于 anchor_right .
页边距通常由一个或多个父级控制 Container 节点,因此如果您的节点是 Container . 移动或调整节点大小时,页边距自动更新。
float margin_top
违约 |
0.0 |
设定器 |
设置边距(值) |
吸气剂 |
获取_Margin() |
节点上边缘与其父控件之间的距离,基于 anchor_top .
页边距通常由一个或多个父级控制 Container 节点,因此如果您的节点是 Container . 移动或调整节点大小时,页边距自动更新。
CursorShape mouse_default_cursor_shape
违约 |
0 |
设定器 |
设置默认光标形状(值) |
吸气剂 |
获取u默认u光标u形状() |
此控件的默认光标形状。对于使用系统鼠标光标的godot插件和应用程序或游戏很有用。
注: 在Linux上,形状可能因系统的光标主题而异。
MouseFilter mouse_filter
违约 |
0 |
设定器 |
设置鼠标过滤器(值) |
吸气剂 |
获取鼠标筛选器() |
控制控件是否能够通过 _gui_input 以及如何处理这些事件。还控制控件是否可以接收 mouse_entered 和 mouse_exited 信号。查看常量以了解每个常量的作用。
bool rect_clip_content
违约 |
假 |
设定器 |
设置剪辑内容(值) |
吸气剂 |
正在剪切内容()。 |
启用是否应将子级的呈现剪辑到此控件的矩形。如果 true
,将不会呈现子级的部分,这些子级将明显地位于该控件的矩形之外。
Vector2 rect_global_position
吸气剂 |
获取全局位置() |
节点相对于世界的全局位置(通常位于窗口的左上角)。
Vector2 rect_min_size
违约 |
矢量2(0,0) |
设定器 |
设置自定义最小大小(值) |
吸气剂 |
获取自定义最小大小() |
节点边界矩形的最小大小。如果将其设置为大于(0,0)的值,则节点的边界矩形将始终至少具有此大小,即使其内容较小。如果设置为(0,0),则节点将自动调整大小以适应其内容,无论是纹理还是子节点。
Vector2 rect_pivot_offset
违约 |
矢量2(0,0) |
设定器 |
设置轴偏移(值) |
吸气剂 |
获取轴偏移量() |
默认情况下,节点的轴是其左上角。当你改变它 rect_scale ,它将围绕这个轴缩放。将此属性设置为 rect_size /2使轴在节点矩形中居中。
Vector2 rect_position
违约 |
矢量2(0,0) |
吸气剂 |
获取位置() |
节点相对于其父节点的位置。它对应于矩形的左上角。财产不受 rect_pivot_offset .
float rect_rotation
违约 |
0.0 |
设定器 |
设置旋转度(值) |
吸气剂 |
得到旋转度 |
节点围绕其轴的旋转(度)。见 rect_pivot_offset 更改轴的位置。
Vector2 rect_scale
违约 |
矢量2(1,1) |
设定器 |
设置刻度(值) |
吸气剂 |
获取_scale() |
节点的比例,相对于其 rect_size . 更改此属性以围绕其缩放节点 rect_pivot_offset .
Vector2 rect_size
违约 |
矢量2(0,0) |
吸气剂 |
获取u大小() |
节点的边界矩形的大小(以像素为单位)。 Container 节点自动更新此属性。
int size_flags_horizontal
违约 |
1 |
设定器 |
设置“大小”标志(值) |
吸气剂 |
获取大小标志()。 |
告诉家长 Container 节点如何调整节点的大小并将其放置在X轴上。使用其中一个 SIZE_*
用于更改标志的常量。查看常量以了解每个常量的作用。
float size_flags_stretch_ratio
违约 |
1.0 |
设定器 |
设置拉伸比(值) |
吸气剂 |
获取拉伸比率()。 |
如果节点及其至少一个邻居使用 SIZE_EXPAND 大小标志,父级 Container 会让它占用多少空间取决于此属性。如果此节点的拉伸比为2,其邻居的拉伸比为1,则此节点将占用可用空间的三分之二。
int size_flags_vertical
违约 |
1 |
设定器 |
设置“大小”标志(值) |
吸气剂 |
获取“大小”标志()。 |
告诉家长 Container 节点如何调整节点的大小并将其放置在Y轴上。使用其中一个 SIZE_*
用于更改标志的常量。查看常量以了解每个常量的作用。
Theme theme
设定器 |
设置主题(值) |
吸气剂 |
获取主题() |
更改此属性将替换当前 Theme 资源此节点及其所有 Control
儿童使用。
方法说明¶
bool _clips_input ( ) virtual
Vector2 _get_minimum_size ( ) virtual
返回此控件的最小大小。见 rect_min_size .
void _gui_input ( InputEvent event ) virtual
使用此方法处理和接受UI元素的输入。见 accept_event .
取代Godot 2 _input_event
.
void accept_event ( )
将输入事件标记为已处理。一旦接受输入事件,它就停止传播,甚至停止传播到正在侦听的节点 Node._unhandled_input 或 Node._unhandled_key_input .
覆盖中的颜色 theme 节点使用的资源。
重写中的整数常量 theme 节点使用的资源。如果 constant
无效,godot清除覆盖。
重写 name
中的字体 theme 节点使用的资源。如果 font
是空的,godot清除覆盖。
重写 name
图标在 theme 节点使用的资源。如果 icon
是空的,godot清除覆盖。
重写 name
中的明暗器 theme 节点使用的资源。如果 shader
是空的,godot清除覆盖。
重写 name
StyleBox 在 theme 节点使用的资源。如果 stylebox
是空的,godot清除覆盖。
Godot调用此方法来测试 data
来自控件的 get_drag_data 可以在 position
. position
是此控件的本地控件。
此方法只能用于测试数据。处理数据 drop_data .
extends Control
func can_drop_data(position, data):
# Check position if it is relevant to you
# Otherwise, just check data
return typeof(data) == TYPE_DICTIONARY and data.has("expected")
Godot调用此方法将 data
来自控件的 get_drag_data 结果。Godot第一个电话 can_drop_data 测试如果 data
允许降落在 position
在哪里? position
是此控件的本地控件。
extends ColorRect
func can_drop_data(position, data):
return typeof(data) == TYPE_DICTIONARY and data.has("color")
func drop_data(position, data):
color = data["color"]
强制阻力和旁路 get_drag_data 和 set_drag_preview 旁路 data
和 preview
. 即使鼠标未悬停或未按下此控件,也将开始拖动。
方法 can_drop_data 和 drop_data 必须在希望接收放置数据的控件上实现。
Vector2 get_begin ( ) const
返回 margin_left 和 margin_top . 也见 rect_position .
Vector2 get_combined_minimum_size ( ) const
CursorShape get_cursor_shape ( Vector2 position=Vector2( 0, 0 ) ) const
返回鼠标悬停时控件显示的鼠标光标形状。见 CursorShape .
Godot调用此方法以获取可以拖动并放到期望放置数据的控件上的数据。退换商品 null
如果没有要拖动的数据。希望接收放置数据的控件应实现 can_drop_data 和 drop_data . position
是此控件的本地控件。可以用 force_drag .
在鼠标后面显示数据的预览可以用 set_drag_preview . 设置预览的好时机在这个方法中。
extends Control
func get_drag_data(position):
var mydata = make_data()
set_drag_preview(make_preview(mydata))
return mydata
Vector2 get_end ( ) const
返回 margin_right 和 margin_bottom .
Control get_focus_owner ( ) const
返回具有键盘焦点的控件或 null
如果没有。
Rect2 get_global_rect ( ) const
返回控件相对于屏幕左上角的位置和大小。见 rect_position 和 rect_size .
Vector2 get_minimum_size ( ) const
返回此控件的最小大小。见 rect_min_size .
Vector2 get_parent_area_size ( ) const
返回父控件中占用的宽度/高度。
Control get_parent_control ( ) const
返回父控件节点。
Rect2 get_rect ( ) const
返回控件相对于父控件左上角的位置和大小。见 rect_position 和 rect_size .
float get_rotation ( ) const
返回旋转(以弧度表示)。
返回当光标停留在此控件上时将显示的工具提示。
void grab_click_focus ( )
void grab_focus ( )
从另一个控件窃取焦点并成为焦点控件(请参见 focus_mode )
bool has_focus ( ) const
返回 true
如果这是当前的焦点控件。见 focus_mode .
void minimum_size_changed ( )
void release_focus ( )
放弃焦点。没有其他控件能够接收键盘输入。
void set_anchor ( Margin margin, float anchor, bool keep_margin=false, bool push_opposite_anchor=true )
void set_anchor_and_margin ( Margin margin, float anchor, float offset, bool push_opposite_anchor=false )
void set_anchors_and_margins_preset ( LayoutPreset preset, LayoutPresetMode resize_mode=0, int margin=0 )
void set_anchors_preset ( LayoutPreset preset, bool keep_margins=false )
void set_begin ( Vector2 position )
集合 margin_left 和 margin_top 同时。
void set_drag_forwarding ( Control target )
将此控件的拖放操作转发到 target
控制。
转发可以在目标控件中实现,类似于方法 get_drag_data , can_drop_data 和 drop_data 但有两个不同之处:
函数名的后缀必须为 _fw
函数必须接受一个额外的参数,该参数是执行转发的控件
# ThisControl.gd
extends Control
func _ready():
set_drag_forwarding(target_control)
# TargetControl.gd
extends Control
func can_drop_data_fw(position, data, from_control):
return true
func drop_data_fw(position, data, from_control):
my_handle_data(data)
func get_drag_data_fw(position, from_control):
set_drag_preview(my_preview)
return my_data()
void set_drag_preview ( Control control )
在鼠标指针处显示给定的控件。调用此方法的好时机已到 get_drag_data .
void set_end ( Vector2 position )
集合 margin_right 和 margin_bottom 同时。
void set_margins_preset ( LayoutPreset preset, LayoutPresetMode resize_mode=0, int margin=0 )
void set_rotation ( float radians )
设置旋转(以弧度为单位)。
void show_modal ( bool exclusive=false )
将控件显示为模式。控件必须是子窗口。模态控制捕捉输入信号,直到关闭或进入其外部区域。当模式控件失去焦点或按下Esc键时,它们会自动隐藏。模式控件广泛用于弹出对话框和菜单。
void warp_mouse ( Vector2 to_position )