You are on page 1of 24

Introdução
Lua é uma linguagem de programação criada em 1993 no Tecgraf, um laboratório de pesquisa e desenvolvimento da PUC-Rio. • Linguagem de script dinâmica como Phyton, Ruby e PHp; • Simples, portável, rápida e fácil; • Lua é uma linguagem de propósito geral, que pode ser utilizada tanto para escrever pequenos scripts, com algumas poucas linhas de código, como sistemas complexos, com dezenas de milhares de linhas de código.

• É utilizada também em muitas outras aplicações. como o soft-ware Adobe Photoshop middleware Ginga do Sistema Digital. The Sims e Sim City.Introdução • Atualmente a linguagem é utilizada principalmente em jogos. Lightroom e o Brasileirode TV . como World of Warcraft.

Obs: (não podem começar com um dígito).ou identicadores .Convenções Léxicas • Na linguagem Lua. nomes .podem ser qualquer cadeia de letras. • Palavras reservadas de Lua: • Lua diferencia MAIÚSCULAS de minúsculas. digitos e sublinhados. .

. ele é determinado dinamicamente dependendo do valor que a variável está armazenando. • number. • table. • function. • userdata.Tipos e variáveis • Tipos • Lua é uma linguagem de tipagem dinâmica. Isso significa que não é necessário declarar o tipo de uma variável. • thread. • boolean. • string. • Existem oito tipos básicos em Lua: • nil.

Em Lua os nomes de variáveis devem começar com letras ou sublinhado. são consideradas globais. por padrão. . • Em Lua as variáveis.Tipos e variáveis • Variáveis • Para declarar uma variável basta escrever seu nome. sendo que o escopo de uma variável local é determinado pelo bloco de código onde ela foi declarada. Para restringirmos o escopo de uma variável precisamos utilizar a palavra chave local.

Operadores • Aritméticos • + adição. • / divisão.negação. • . . • ^ exponenciação. • * multiplicação.subtração. • .

• == Igual a. • ~= diferente de. • > Maior que. • >= Maior ou igual. Os operadores relacionais sempre retornam true ou false. • <= Menor ou igual.Operadores • Relacionais • < Menor que. .

Operadores • Lógicos • and. • not. . Em Lua os operadores lógicos consideram false e nil como falso e qualquer outra coisa como verdadeiro. • or.

. . (dois pontos seguidos).Operadores • Concatenação Lua permite concatenação de strings e para isso disponibiliza o operador .

Estruturas de controle • if then else • while .

gfind : percorre palavras de uma string . • ipairs : percorre os indices de um array . • string. Os principais iteradores oferecidos por Lua são: • pairs : percorre as chaves de uma tabela. • io.lines : percorre as linhas de um arquivo. .Estruturas de controle • Repeat • For genérico • For numérico O for genérico é utilizado para percorrer os valores retornados por uma função iteradora.

Estruturas de controle • For genérico • Saindo de um Block break. .

Funções • Declaração • Retorno .

conjuntos e diversas outras estruturas. tabelas são o único mecanismo de estrutura de dados existente.Tabelas Em Lua. Elas implementam arrays. matrizes. • Criação de Tabelas • Acesso a elementos .

Tabelas • Tamanho de Tabelas .

. pela falta de um maior controle das informações processadas. portanto. pecando. • Apenas relaciona objetos de mídia.Integração NCL-Lua • NCL • Linguagem declarativa. • Scripts NCLua • Esses scripts seguem sintaxe idêntica à de Lua e possuem um conjunto de bibliotecas similar • Lua possui adaptações para funcionar embutida em documentos NCL.

Integração NCL-Lua • Scripts NCLua • Orientada a eventos • O fluxo da aplicação é guiada por eventos externos gerados pelo NCL . • Esse comportamento caracteriza uma ponte bidirecional entre o NCL e o NCLua. • O documento NCLua também pode gerar eventos para o NCL. de comunicação .

cada um exporta um conjunto de funções. Esses módulos são: • Módulo event: Permite a comunicação do NCLua com o NCL através de eventos. . • Módulo canvas: Oferece uma API para desenhar primitivas gráficas e imagens.Integração NCL-Lua • Módulos NCLua As bibliotecas disponíveis para o NCLua estão divididas em quatro módulos.

Integração NCL-Lua • Módulo event Fazer a ponte entre o documento NCL e o script NCLua. • registrar eventos .

Integração NCL-Lua • eventos Eventos são tabelas Lua. . Dentre elas as utilizadas no presente minicurso são: • ncl: Um NCLua se comunica com o documento no qual está inserido através desta classe de eventos. Possuem um campo class que identifica a classe do evento. • key: utilizada para representar o uso do controle remoto pelo usuário.

• area ou property: Eventos podem ser direcionados a âncoras especias ou ao nó comoum todo. • value: Recebe o valor da propriedade do campo property. pause. Dentre elas as utilizadas no presente minicurso são: • ncl: Um NCLua se comunica com o documento no qual está inserido através desta classe de eventos. stop.Integração NCL-Lua • eventos Eventos são tabelas Lua. • action: Pode ser: start. resume ou abort. attribution ou selection. • Campos da tabela: • type: Pode ser: presentation. Possuem um campo class que identifica a classe do evento. .

post (dst. • Funções do módulo event • event. evt): posta (gera) um evento. • key: Valor da tecla em questão. • event. f.Integração NCL-Lua • eventos • key: utilizada para representar o uso do controle remoto pelo usuário. . class): registra a função passada como um tratador de eventos.register (pos. • Campos da tabela: • type: Deve ser do tipo press ou do tipo release.

• Canvas:flush (): atualiza o canvas após operaçõees de desenho e de composição. • canvas:attrFont(face. . y1. height): desenha um retângulo. text): desenha um texto. y2): desenha uma linha. style): altera a fonte do canvas. width. size. • canvas:drawLine (x1.Integração NCL-Lua • Módulo canvas Permite realizar operações gráficas durante a apresentação de uma aplicação. • canvas:drawRect (mode. • canvas:clear (x. • canvas:drawText (x. y. w. • Funções do módulo canvas • canvas:new(image path): uma imagem é passada como parâmetro. G. h): limpa o canvas com a cor congurada em attrColor. x2. y. x. y. B . • canvas:attrColor(R. • canvas:attrSize(): retorna as dimensões do canvas.A): altera a cor do canvas.