首页
课程中心
LUA实例应用
自定义UI应用(四)
自定义UI应用(四)
小燕 更新时间: 2022-08-25 11:38:01

LUA实例应用:自定义UI应用(四)

本课我们将继续学习自定义UI的具体应用,首先我们会学习输入框和按钮拖拽功能的实现,最后,我们还会学习面向对象的编程概念。

 

视频时间节点:

  • 输入框:17:21
  • 按钮拖拽:21:53
  • 面向对象:25:49

 

老师介绍:

 
按钮拖拽
uiid = [[7082749660133022866]]
buttonid = [[7082749660133022866_117]]
statusid = [[7082749660133022866_119]]
dirid = 
{
    [[7082749660133022866_120]],
    [[7082749660133022866_121]],
    [[7082749660133022866_122]],
    [[7082749660133022866_123]]
}
texture = 
{
    [[10151]],--手指
    [[10318]]--打勾
}
speed = 20
player_list = {}

-- 刷新按钮显示状态
local function updata(playerid, info_tab)
    -- 设置按钮位置
    Coustomui:setPosition(playerid, uiid, buttonid, info_tab.x, info_tab.y)
    -- 设置右上角状态图标
    Coustomui:setTexture(playerid, uiid, statusid, info_tab.texture)
    -- 设置方向键隐藏或显示
    if(info_tab.texture == texture[1])
    then 
        for k,v in pairs(dirid)
        do 
            Coustomui:hideElement(playerid, uiid, v)
        end
    else 
        for k,v in pairs(dirid)
        do 
            Coustomui:showElement(playerid, uiid, v)
        end
    end
end

-- 有玩家进入游戏时运行
local function Game_AnyPlayer_EnterGame(event)
    local uin = event.eventobjid--进入游戏的玩家迷你号
    Player:openUIView(uin,uiid)--给玩家打开界面
    player_list[uin] = {texture = texture[1], x = 565, y = 266}
    updata(uin, player_list[uin])
end

-- 注册有玩家进入游戏监听器
ScriptSupportEvent:registerEvent([=[Game.AnyPlayer.EnterGame]=], Game_AnyPlayer_EnterGame)

-- 界面中的按钮被松开时运行
local function UI_Button_Click(event)
    local uin = event.eventobjid
    -- 按下右上角的切换状态按键
    if(event.btnelenemt == statusid)
    then 
        if(player_list[uin].texture  == texture[1])
        then
            player_list[uin].texture = texture[2]
        else 
            player_list[uin].texture = texture[1]
        end
        updata(uin, player_list[uin])
    -- 按下方向键
    else 
        for k,v in pairs(dirid)
        do 
            if(event.btnelenemt == v)
            then 
                -- 上
                if(k == 1)
                then 
                    player_list[uin].y = player_list[uin].y - speed
                -- 下
                elseif(k == 2)
                then 
                    player_list[uin].y = player_list[uin].y + speed
                -- 左
                elseif(k == 3)
                then 
                    player_list[uin].x = player_list[uin].x - speed
                -- 右
                elseif(k == 4)
                then 
                    player_list[uin].x = player_list[uin].x + speed
                end
            end
        end
        updata(uin, player_list[uin])
    end
end

-- 注册界面中的按钮被松开监听器
ScriptSupportEvent:registerEvent([=[UI.Button.Click]=], UI_Button_Click)

 

输入框

uiid = [[7082749660133022866]]
content = "12"

-- 有玩家进入游戏时运行
local function Game_AnyPlayer_EnterGame(event)
    local uin=event.eventobjid--进入游戏的玩家迷你号
    Player:openUIView(uin,uiid)--给玩家打开界面
end

-- 注册有玩家进入游戏监听器
ScriptSupportEvent:registerEvent([=[Game.AnyPlayer.EnterGame]=], Game_AnyPlayer_EnterGame)

-- ui输入框失去焦点时运行
local function UI_LostFocus(event)
    local hour = tonumber(event.content)
    if(hour and hour >= 0 and hour < 24)
    then 
        GameRule.CurTime = hour
        content = tostring(hour)
    else 
        Chat:sendSystemMsg("无效的时间,请重新输入")
        local playerid=event.eventobjid
        local uiid=event.CustomUI
        local elementid=event.btnelenemt
        local text=content
        --设置玩家的文本元件的显示内容
        Coustomui:setText(playerid, uiid, elementid, text)
    end
end

-- 注册ui输入框失去焦点监听器
ScriptSupportEvent:registerEvent([=[UI.LostFocus]=], UI_LostFocus)
课程目录
共50节
1 事件系统
2 世界事件
3 游戏逻辑事件
4 玩家事件(一)
5 玩家事件(二)
6 玩家事件(三)
7 玩家事件(四)
8 生物事件
9 方块与道具事件
10 世界管理(一)
11 世界管理(三)
12 世界管理(二)
13 方块管理(一)
14 方块管理(二)
15 Actor管理(一)
16 Actor管理(二)
17 Actor管理(三)
18 玩家管理(一)
19 玩家管理(二)
20 生物管理
21 区域管理(一)
22 区域管理(二)
23 区域管理(三)
24 联机管理
25 背包管理
26 文字板管理
27 容器管理
28 自定义UI管理(一)
29 自定义UI管理(二)
30 自定义UI管理(三)
31 自定义UI应用(一)
32 自定义UI应用(二)
33 自定义UI应用(三)
34 自定义UI应用(四)
35 考试系统
36 购物商城(一)
37 购物商城(二)
38 计算器
39 打击类音游
40 弹球游戏
41 追逐游戏
42 空战游戏(一)
43 空战游戏(二)
44 空战游戏(三)
45 颜色跳跳
46 炮台挑战
47 炸弹游戏
48 推箱子
49 心跳水立方
50 塔防游戏
站点有内容要更新是否更新。
更新
忽略