Lua

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск

Lua - скриптовый язык программирования.

Официальный сайт Lua - http://www.lua.org/home.html.

http://tylerneylon.com/a/learn-lua/

http://docs.madewithmarmalade.com/display/MD/Introduction+to+Lua

Введение

Lua - динамически типизированный язык, предназначенный для использования в качестве расширения или в качестве скриптового языка, и при этом достаточно компактный, чтобы поместиться на различных исполняющих платформах. Он поддерживает небольшое количество структур данных, такие как логические значения, числа (по умолчанию — двойной точности с плавающей точкой), а также строки.

Используется для удобства вычислений и увеличения скорости исполнения кода.

Создание скрипта

В машине состояний, выбрав добавляемое свойство, есть возможность создать или открыть уже существующий скрипт (edit script):

Edit script.png

Программа - интерпретатор для работы со скриптами Lua - ZeroBrane Studio: http://studio.zerobrane.com/

Основные функции

При создании скриптов в первой вкладке всегда создается файл viewer.lua, где перечислен список доступных функций и параметров.

Существует четыре вида функций для взаимодействия скрипта с машиной состояний:

Func.png


Добавлены функции (вытягивание данных из текстовой базы):

viewer.getResFromTxtDB(txtID,tp,defValue)

viewer.getStrFromTxtDB(txtID,sense,defValue)

С их помощью можно вытянуть иконку из текстовой базы и вытянуть текст по текущей локализации.

Так же частично доступна библиотека os:

date

difftime

time

Она позволит нам форматировать время.

Отладка

print(e1, e2, ...) Печатает значения аргументов. В конце выводится перевод строки. Эта функция не предназначена для форматного вывода, а только для быстрого (отладочного) вывода значений переменных.

В app.icf при установке

[GameTrace]

Level="Verbose"

В логе у нас появятся данные из скриптов со всеми операциями:

D/IScript IScript::callScriptMethod() callScriptMethod: "lottery_scpt:init"

D/IScript viewer_getResFromTxtDB() viewer.getResFromTxtDB(5670,0,666)->666

Пример использования

Рассмотрим пример использования скрипта для написания программы Калькулятор

Project.png

Создаем машину состояний с именем "control", в ней создаем скрипт obj_control.lua. В функции init () объявляем переменные:


1. По тапу на кнопки 0-9 записываем машине соответствующий параметр и вызываем состояние:

0digit.png

При вызове состояния pressedDigit скриптом запускается соответствующая функция:

Объявляем локальную переменную local digit, в которую будем записывать значение параметра pressed (записанное по тапу на кнопку).

Presseddigit.png

2. Аналогично по тапу на кнопки операторов записываем параметр и вызываем функцию pressedOperator:

Operator.png

Oper.png

3. Вызов функции pressedRavnо, вычисление и вывод результата:

Res2.png



ID("control") - функция, которая возвращает ID объекта с именем "control" - сделано для удобства переноса скриптов из одного проекта в другой, не подвязываясь к ID объекта. НО, при импорте скрипта в другой проект важно проверять наличие объектов с таким же именем. Их быть не должно! В противном случае при сохранении проекта в редакторе будет выдаваться ошибка Errorscript.png