如何克服 Godot 将按钮字体更改为默认颜色的问题?

2024-03-09

我正在使用 Godot 4。我在容器中手动创建了很多按钮。我在主场景中设置了一个颜色变量(tempcol)。当我单击带有 tempcol 设置的按钮时,比如 Color.Red,按钮的字体颜色更改为白色(似乎是默认字体颜色),但是当我单击另一个按钮时,原始按钮更改为红色(正确的按钮文本设置为正确的颜色但首先设置为错误的颜色)。没有按钮预制设置似乎有什么不同。普通样式设置为 StyleBoxFlat(白色背景)。我能做些什么让字体的颜色立即显示为正确的颜色吗?

pressed.connect(c);
        
        
func c():
    if (get_parent().tempcol!=Color.BLACK):
        set("custom_colors/font_color", get_parent().tempcol);
        get_parent().check(num,squx,squy,bsqu);
        
    else:
        var B1=B.instantiate();
        B1._set_position(Vector2(centrex,centrey));
        B1.num=num;
        get_parent().call_deferred("add_child", B1);

按钮状态

我从使用鼠标时的状态描述开始这个答案,因为这是与鼠标交互的更复杂的方式Button.

当你拥有Button场景中的 s,除非您禁用它们,否则它们将处于正常状态。

当您将指针移到Button,它从正常变为悬停。如果将指针移出,它应该从悬停状态返回到正常状态。

如果您单击Button它从悬停变为按下。现在按钮获得焦点了。

当您松开顶部的单击时Button,它从按下状态变为悬停状态(这可能会很快看到按下状态)。然后当您将指针移出Button,它从悬停到焦点(而不是正常)。

或者,您可以将指针移出Button而是释放单击,这也会导致焦点状态。

当你与另一个人互动时Control,它从焦点回到正常。


使用鼠标的状态图

这是状态图Button当您使用鼠标时:

所以我们看到Button从正常到正常可以走两条5路径:

  1. 正常 -> 悬停 -> 正常

    在这里,您将鼠标指针移到按钮上,然后将其移出。

  2. 正常 -> 悬停 -> 按下(悬停 + 焦点) -> 悬停(焦点​​) -> 焦点 -> 正常

    在这里,您将鼠标指针移到Button,按下并释放单击,然后将鼠标指针移出并单击其他一些Control.


使用触摸的状态图

当您使用触摸输入时,没有悬停状态,因此图表简化为:

在这里,我们有一条从正常到正常的路径:正常 -> 按下 + 焦点 -> 焦点 -> 正常。在这里您点击Button,然后点击其他一些Control.


使用键盘输入时的图形状态

使用键盘时与使用触摸类似,没有悬停。然而,我们独立于 Pressed 来控制 Focus,这会导致:

这里我们有从普通到普通的三种路径:

  1. 正常 -> 焦点 -> 正常。

    在这里您可以使用 Tab 键进入Button,然后按 Tab 键退出。

  2. 正常 -> 对焦 -> 按下 + 对焦 -> 对焦 -> 正常。

    在这里您可以使用 Tab 键进入Button,按下并释放它,然后按 Tab 将其退出。

Note: 您可以尝试在不释放的情况下退出Button,这导致Button直接从按下(焦点)到正常(类似于将鼠标从Button按住单击的同时)。但是,我决定不将其视为单独的过渡或路径。


按钮颜色

好吧,现在我们知道了州,我们在每个州看到的颜色是什么?

Godot 3:

  • Normal: custom_colors/font_color.
  • Hover: custom_colors/font_color_hover.
  • 按下:custom_colors/font_color_pressed.
  • Focus: custom_colors/font_color_focus.
  • 禁用:custom_colors/font_color_disabled.

Note:当您将 Hover 与 Focus 结合使用时,您仍然可以获得custom_colors/font_color_hover。当您将 Pressed 与 Hover 或 Focus 结合使用时,您仍然会得到custom_colors/font_color_pressed.


Godot 4:

  • Normal: theme_override_colors/font_color.
  • Hover: theme_override_colors/font_hover_color.
  • 按下:theme_override_colors/font_pressed_color.
  • Focus: theme_override_colors/font_focus_color.
  • 禁用:theme_override_colors/font_disabled_color.

Note:与 Godot 3 中发生的情况类似,当你将 Hover 与 Focus 结合使用时,你仍然会得到theme_override_colors/font_hover_color。当您将 Pressed 与 Hover 或 Focus 结合使用时,您仍然会得到theme_override_colors/font_pressed_color。事实上,我没能得到theme_override_colors/font_hover_pressed_color.


你的问题

当我单击按钮 (...) 时,按钮的字体颜色变为白色

那不是正常颜色。虽然你有Button按下时,您正在查看按下的颜色。释放后,如果鼠标指针位于Button您正在查看悬停颜色。否则,这是焦点颜色。

当我单击另一个按钮时,原始按钮变为红色

那是正常颜色。

没有按钮预制设置似乎有什么不同。

预制件不是一个东西。这是戈多。

我能做些什么让字体的颜色立即显示为正确的颜色吗?

这不是“立即”的问题,而是你想把颜色改变成什么状态。我怀疑您想将“焦点”、“悬停”和“按下”的颜色设置为与“正常”的颜色相同。请注意,了解状态对于用户体验非常重要。哪个Control拥有焦点对于仅键盘输入尤其重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何克服 Godot 将按钮字体更改为默认颜色的问题? 的相关文章

  • C# 中调用另一个 Button 的代码

    我需要知道是否可以从另一个按钮调用单击按钮 private void myAction Click object sender EventArgs e int x private void Go Click object sender Ev
  • 我开始使用诊断 CSS 样式表 例如http snipplr com view 6770 css diagnostics highlight deprecated html with css more http snipplr com vi
  • Java Swing:使用相应的键盘按钮时显示按下的按钮

    我正在使用 Swing 用 Ja va 编写一个程序 并使用包含箭头键的 GUI 方向键与键盘上的方向键相对应 当我按下键盘上的向上箭头键时 我希望 GUI 上的向上箭头键显示为被按下 在我释放箭头键之前 它应该显示它仍在被按下 并且当释放
  • 带有 viewPager 的按钮活动?

    请不要评判我 我对 android 开发非常陌生 我想用 viewPager 制作一个应用程序 我有三个具有三种不同布局的页面 但我只是不知道如何处理 viewPager 上第二页上的按钮 我发现了这个问题 如何在viewpager中编写按
  • Kotlin 中按钮状态的不同背景

    我的项目中有一个按钮 其工作原理如下 该按钮对于每种状态有 3 种不同的设计 禁用 state enabled false 启用 按下 如果未选择任何文件 此按钮将保持禁用状态 并且具有特定的设计 不过 当选择文件时 此按钮将启用并切换到不
  • 自定义按钮上的自定义属性不显示

    我扩展了 Button 小部件 使其能够应用多个自定义属性 其中一个属性是颜色滤镜 我在创建按钮时尝试将其应用于其背景 这是行不通的 请参阅下面的屏幕截图和代码 我尝试在同一代码位置直接设置背景颜色 它确实改变了背景颜色 但这不是我需要的
  • 如何在ActionBar(Android)中添加按钮?

    我想在示例右侧的操作栏中添加一个按钮 如以下屏幕截图所示 我在 onCreate 方法中得到的 actionBar 为 ActionBar actionBar getActionBar actionBar setDisplayHomeAsU
  • 在 Android 中动态创建/删除按钮

    首先 如果这个答案已经在这里 我很抱歉 因为我已经搜索了几个星期 但还没有找到任何东西 我正在开发一个 Android 应用程序 它需要允许用户创建和删除按钮 我知道如何通过将按钮添加到 XML 文件并在 JAVA 文件中创建其功能来通常静
  • 跨越父按钮高度的 100%

    我有以下标记
  • Android Material Design 中的“触摸目标尺寸”到底是什么

    参考有关 Material Design 的 Android 文档 我经常发现我们被引导将按钮的 触摸目标 设置为高度 例如 48dp https www google com design spec components buttons
  • 如何在单击按钮时在按钮上制作圆形波纹?

    背景 在 Android 的拨号器应用程序上 当您开始搜索某些内容时 单击 EditText 左侧的箭头按钮 您会在其上看到圆形波纹效果 问题 我也尝试过 但我得到的是一个矩形的
  • 为什么按钮不绘制?

    我不明白为什么按钮不绘制在它之前工作的背景上 这不会显示错误 这是代码 gt 这段代码是错误的吗 我的问题是否可以重现 它可能在按钮的代码中 我将不胜感激 import pygame pygame init screen pygame di
  • 下拉按钮/微调器类似于 Google 设计规范中的按钮

    我想知道如何制作一个下拉按钮 菜单 就像我们在 Google 的设计规范和下图中看到的那样 因此列表在按钮下方展开 我是否需要为其设置自定义布局而不是R layout support simple spinner dropdown item
  • Android - 在 AsyncTask 中执行后

    我目前有一个asyncTask在预执行时启动一个加载栏 在后台向服务器发送一些内容 在执行后关闭对话框并启用一个按钮 但是 由于 doInBackground 返回 null 我的后执行未执行 我试图弄清楚我能做些什么来让 postExec
  • Android:如何使用单个按钮执行多个任务

    我有 1 个按钮处于活动状态 我想使用这个 1 按钮来执行多项任务 那么我该怎么办呢 如果我第一次按此按钮 则更改 2 次按钮 如果我按第二次 它就会更新我的数据 但这只是第一次工作第二次就不起作用了 查看我的代码我尝试了什么 Intent
  • Zurb Foundation:如何在调整大小到较小的屏幕时使按钮变小?

    在 Zurb Foundation 4 中 是否有一种方法可以在浏览器尺寸调整得较小或在较小的屏幕上时自动切换到较小的按钮样式 例如 当屏幕是标准桌面屏幕时 请执行以下操作 a href class primary button Butto
  • Android 自定义三角形按钮

    我想制作 2 个对角三角形按钮 如下所示这个问题 https stackoverflow com questions 23315400 android diagonal triangle buttons 我怎样才能实现这个目标 我应该用矩形
  • 如何替换 iOS 6 上 UIWebView 键盘下工具栏上的按钮?

    如何替换工具栏上的按钮UIWebViewiOS 6 上有键盘吗 以下代码在 iOS 5 1 上运行良好 但在 iOS 6 上不起作用 UIWindow keyboardWindow nil for UIWindow testWindow i
  • 如何更改 Bootstrap 按钮的形状

    如何将引导程序中默认的圆角按钮更改为正常的矩形按钮 现在我只能更改按钮的大小颜色或字体 btn lg padding 10px 16px font size 18px line height 1 33 border radius 6px b
  • iOS 模拟器无法正确刷新

    我尝试模拟一个在 Xcode 9 中创建的非常非常简单的应用程序 我尝试在装有 iOS 11 2 的 iPhone6 的 iOS 模拟器中模拟它 我还测试了其他设备 结果相同 在真实设备上 该应用程序可以按预期运行 但在模拟器上却没有 我希

随机推荐