# 事件管理
拿 按钮 做例子
local button = class.button:builder
{
x = 300,
y = 300,
w = 64,
h = 64,
sync_key = 'only_one', --选填 没填不会响应同步事件 sync_key 要唯一不重复
keys = {'F2', 'ESC'}, --选填 绑定快捷键 只有其中的快捷键才会响应事件
}
function button:on_button_clicked()
print('异步点击按钮事件', self)
end
function button:on_button_key_down(str)
print('异步的按键事件', self, str)
end
--事件前缀改为on_sync 即可变成同步事件 并且第一个参数是为同步操作的玩家
function button:on_sync_button_clicked(player)
print('同步点击按钮事件', self, player)
end
function button:on_sync_button_key_down(player, str)
print('同步的按键事件', self, player, str)
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
当面板之上 有多个按钮 并且事件对应的操作相似的,例如 背包中会有多个按钮
可以由父控件来管理他的所有子控件事件
写一个按钮组做例子
local group_index = 0
class.group = extends(class.panel)
{
new = function (parent, image, x, y, width, height, line, column)
local max_width = (width + 10) * column
local max_height = (height + 10) * line
local panel = class.panel.new(parent,'', x, y, max_width, max_height)
panel.__index = class.group
group_index = group_index + 1
local button_list = {}
local i = 0
for a = 1, line do
for b = 1, column do
local x = (width + 10) * (b - 1)
local y = (height + 10) * (a - 1)
local button = panel:add_button(image, x, y, width, height)
button_list[i] = button
button.slot_id = #button_list
button.sync_key = 'group_' .. group_index .. '_' .. button.slot_id
end
end
panel.button_list = button_list
return panel
end,
--@ self: group 自身
--@ button: 响应事件的按钮
on_button_clicked = function (self,button)
print('按钮异步点击',button, button.slot_id)
end,
--@ self: group 自身
--@ button: 响应事件的按钮
--@ player: 响应事件的玩家
on_sync_button_clicked = function (self, button, player)
print('按钮同步点击',button, button.slot_id)
end,
}
--这样就会在0,0位置 创建一块 带有5 * 3 的数量的按钮 并且 每个按钮的大小是64*64
local group = class.group.create('button.blp', 0, 0, 64, 64, 5, 3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53