【问题标题】:ROBLOX - Iterate through Frame buttonsROBLOX - 遍历 Frame 按钮
【发布时间】:2019-12-21 12:45:24
【问题描述】:

我似乎无法通过“name, child in pairs(game.StarterGui.AdminCmds.Commands:GetChildren())”迭代来更改所有子元素的属性

我有一个带有许多按钮的 GUI 框架。当用户单击按钮时,(1) 代码应将所有按钮的 BackgroundColor3 重置为默认值,然后 (2) 切换单击按钮的 BackgroundColor3 以突出显示它。

第 2 部分工作正常,但第 (1) 部分未能更改背景颜色,这很可能是由于我尝试处理 Frame 子项的方式。如果我在操作过程中执行“打印(姓名,孩子)”,我可以看到正确的值,但 BackgroundColor3 无法更改。

local button = script.Parent
local toggled = false

local function onButtonActivated()
-- Loop through Frame and reset button colour
    for name, child in pairs(game.StarterGui.AdminCmds.Commands:GetChildren()) do
        child.BackgroundColor3 = Color3.fromRGB(0, 85, 127)
    end

-- Update clicked button colour
    if toggled == false then
        button.BackgroundColor3 = Color3.fromRGB(85, 170, 255)
        toggled = true
    else
        button.BackgroundColor3 = Color3.fromRGB(0, 85, 127)
        toggled = false
    end
end

script.Parent.MouseButton1Click:Connect(onButtonActivated)

local button
local toggled

没有错误,只是没有颜色变化。 localscript 附加到当前作为测试的按钮之一。我打算将其更改为模块,但如何做到这一点是另一天的问题。

【问题讨论】:

    标签: lua roblox


    【解决方案1】:

    通过反复试验找到答案。问题是我试图引用 StartGUI,它在播放器启动时移动到 PlayerGUI,这是错误的。

    在单击按钮的 Frame 子项中运行的 For 循环应如下所示:

    for name, child in pairs(script.Parent.Parent:GetChildren()) do
        child.BackgroundColor3 = Color3.fromRGB(0, 85, 127)
    end
    

    所以我发现,无论对象在哪里,都可以根据需要多次使用 .Parent 来遍历树。方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 2021-12-23
      • 2011-08-05
      • 2013-11-05
      相关资源
      最近更新 更多