[Tutorial] Callbacks de text areas |
4 | ||
Callbacks de text areas
Tags âncoras
No exemplo acima, temos uma tag âncora com um evento: mostrarAjuda, que ao ser clicada, ativará o eventTextareaCallback, contendo o id da text area clicada, o nome do jogador e o correspondente callback.
function eventTextAreaCallback(id, jogador, callback)
O eventTextAreaCallback será ativado toda vez que o jogador clicar em "Ajuda". Criando uma framework para callbacks
I. modelo do callback
O nomeDoCallBack irá abrigar o nome do callback e o sufixo da função que ele irá chamar, todo o texto após # será divido por virgulas e transformados em argumentos para a função. II. construindo eventTextAreaCallback
if type(_G["onCallback_"..callbackName]) == "function" then
function string.split(rawString, separator)
table.insert(splittedString, str) return splittedString Utilizando este código, a função eventTextAreaCallback vai se tornar um distribuidor, checando se a função "onCallback_nomeDoCallBack" existe, e se caso exista, passando o nome do jogador, id da text area e os argumentos do callback para ela. Você pode checar um exemplo aqui. |
Putofobico « Citoyen » 1463973540000
| 0 | ||
Vai ser bem útil. Bem útil mesmo. |
Igortieni « Citoyen » 1464010620000
| 0 | ||
putofobico a dit : |
Laagaadoo « Citoyen » 1464021000000
| 0 | ||
ótimo tutorial e framework |
Impressorahp « Citoyen » 1473098940000
| 0 | ||
Me ajudou muito!^^ |
0 | ||
:c n tou a conseguir |
Jellymichey « Censeur » 1499865060000
| 2 | ||
Ernyk a dit : Uma área de callback é defenida colocando <a href="event:texto">texto</a> toda a vez que alguém clicar nessa área, a função eventTextAreaCallback é acionada com os argumentos:
"Todos" os textos têem de ser "rodeados" com aspas simples ou com aspas duplas, senão vão ser consideradas variáveis Seleção de aspas simples pode conter naturalmente aspas duplas e vice-versa Caso a seleção seja com aspas duplas e quer meter uma aspa dupla, vai acabar a seleção por aí, a não ser que antes desse caractere esteja uma barra ( \ ) por exemplo "<a href=\"event:texto\">texto</a>" e '<a href="event:texto">texto</a>' |
Gamedroit « Citoyen » 1499911800000
| 1 | ||
gostei esh mas oque você usou é desnecessário -' se for um simples menu é só fazer isto: Code Lua 1 2 3 4 5 6 7 ui.addTextArea(1, '<a href="event:mostrarAjuda">Ajuda</a>', nil, 300, 100, 200, 100) a maneira que você fez usando table.unpack ficou muito confuso -q apesar que eu sei que o string.split retorna uma tabela nem todos sabem lidar com tabelas -' e também usou _G que é outra coisa desnecessária em muitos scripts. Dernière modification le 1499911980000 |
Brenower « Censeur » 1499946060000
| 1 | ||
Mas usar o _G foi necessário ué |
Hydroper « Citoyen » 1499958540000
| 0 | ||
Contistente3 a dit : Concordo, mas acho que ele usou a tabela de callbacks por questão de legibilidade do código, porém isso pode ser mais ineficiente na execução — 1) o compilador de Lua não pode alinhar o acesso desses callbacks... 2) LuaJ não faz cache de acessos nas tabelas (de acordo com o código fonte no GitHub). Dernière modification le 1499958720000 |
Laagaadoo « Citoyen » 1499975100000
| 1 | ||
Profiver a dit : na verdade não importa, luaj é quase tão rápido quanto o lua em C, em alguns casos é mais rápido |
Transfor801 « Citoyen » 1611594060000
| 0 | ||
Muito bom mano valeu aí |
Jp_darkuss « Citoyen » 1611624000000
| 0 | ||
Quando eu queria passa parâmetros eu fazia assim: Code Lua 1 2 3 4 5 6 7 ui.addTextArea(0, "<a href='event:print(Blá blá blá)'>Clique aqui!</a>", nil, 380, 100, nil, nil, nil, nil, 1, true) Normalmente só uso isso em coisas bem específicas. @edit: o link não funciona. Dernière modification le 1611624240000 |