Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Indigo Rose AutoPlay Media Studio (часть 4)

Модерирует : gyra, Maz

articlebot (05-08-2012 06:20): Лимит страниц, переезжаем сюда  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Robby

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Autoplay Media Studio использует скриптовый язык на базе LUA, поэтому много вопросов отпадет после прочтения этого http://www.lua.ru/doc/.
С программой идет встроенная справка со множеством примеров и детальным объяснением все аспектов создания проекта. Для понимания многих вещей из справки, знание английского языка не требуется. Структура проекта базируется на следующей модели Объект (Object)->Событие (Events)->Действие (Actions). Создав Объект вы планируете для него какое-то поведение (Действие) при наступление какого-либо события. Событием может быть например, загрузка страницы, наведение укзателя мыши, клик, получение фокуса объектом и другое. Понять какие события доступны для каждого объекта можно на странице свойств (Properties) объекта при двойном клике на нем либо выбрав в контекстном меню пункт Properties. Код планируемого действия, соответсвенно должен быть расположен окне нужного События. Например, чтобы выполнилось действие при нажатии на кнопку (Button) мы должны разместить свой код на вкладке On Click страницы свойств объекта, в нашем случае кнопки.
 
Переменные используются для хранения значений в процессе выполнения программы. Используются три вида переменных: глобальные, локальные и поля таблиц.  
Именами (идентификаторами) могут быть любые строки из букв, цифр и символа подчеркивания, не начинающиеся с цифры.
 
Следующие ключевые слова зарезервированы и не могут быть использованы в именах:  
and   break   do  else  elseif  end   false  for   function  if   in  local  nil  not  or   repeat  return  then  true   until   while
 
Lua является языком, чувствительным к регистру символов, поэтому and – ключевое слово, тогда как And и AND – два разных допустимых имени (идентификатора).
 
Описание всех возможных дейсвий находится в разделе справки Action Reference
Там все интуитивно понятно. Выбираем объект и смотрим что с ним можно сделать. Get - получить какое-то свойство, Set - устновить какое-то свойство Is - проверить состояние свойства. Например нам нужно скопировать файл:
в окне редактора Script нажимаем кнопку Add Action, в появившемся окне выбираем категорию File и выбираем нужное действие, в нашем примере File.Copy. Открываем справку по данному действию и внимаетельно смотрим на типы (выделены) значений для данной команды.

Код:
File.Copy (  
string   Source,
string   Destination,
boolean  Recurse = true,
boolean  Overwrite = true,
boolean  AbortOnFail = false,
boolean  IncludeHiddenFiles = true,
function CallbackFunction = nil)

Основные ошибки в написании скриптов: неправильное использование типов данных, когда используют табличное значение как строковое, строку как число,  логический оператор вместо строкового и т.д.
 
В Lua восемь основных типов: nil (неопределенный), boolean (логический), number (числовой), string (строковый), function (функция), userdata (пользовательские данные), thread (поток), и table (таблица). Nil - это тип значения nil [пустое значение], главное свойство которого – отличаться от всех остальных значений и обозначать отсутствие пригодного значения. К типу Boolean относятся значения false (ложь) и true (истина). Значения nil и false считаются ложными, любое другое значение считается истинным. К типу Number относятся вещественные числа (двойной точности с плавающей запятой).
 
 
String (строка) - строки должны быть заключены в одинарные или двойные кавычки и могут содержать следующие С-подобные escape-поледовательности: '\a' (звонок), '\b' (забой), '\f' (перевод страницы), '\n' (перевод на новую строку), '\r' (возврат каретки), '\t' (горизонтальная табуляция), '\v' (вертикальная табуляция), '\\' (обратный слэш), '\"' (двойная кавычка), и '\'' (апостроф [одинарная кавычка]).  
Number (число)  - может быть задана как с целой так и с дробной частью. Допустимо применение экспоненциальной формы записи.
Boolean (логический) - false (ложь) true (истина)
 
Тип table (таблица) определяет ассоциативные массивы. Такие массивы могут индексироваться не только числами, но и любыми значениями (за исключением nil). Таблица может гетерогенной, т.е. содержать значения сразу нескольких типов (кроме nil). Таблицы представляют собой единственный механизм структурирования данных в Lua; они могут использоваться как простые массивы, таблицы символов, множества, поля записей, деревья и так далее. Для представления словарей Lua использует имя поля в качестве индекса таблицы. Представление в виде a.name считается тождественным представлению a["name"].  
 
Если, например, нужно сравнить две строки, то выбираем категорию String и в ней функию

Код:
number String.Compare (
string Text,
string CompareTo)
 
Опять открываем справку и внимательно смотрим на типы данных. В данном примере фунция возвращает какой-то результат, в нашем случае это число (number), поэтому смотрим описание Returns (возврата зачения) и видим следущее:
 
Returns
(number) A number representing the result of the comparison:
 
VALUE  DESCRIPTION
 
-1        The string in Text is less than (<) the string in CompareTo.
 0         The string in Text is equal to (=) the string in CompareTo.
 1         The string in Text is greater than (>) the string in CompareTo.
 
Что значит, в результате сравнения двух строк функция возвращает число, значение которого определяет результат сравнения
-1 - строка (Text) меньше строки с которой сравнивали (CompareTo);
 0 - строки равны;
 1 - строка (Text) больше строки с которой сравнивали (CompareTo);
 
 
Lua обеспечивает автоматическое преобразование между строковыми и числовыми значениями в процессе выполнения. Любая арифметическая операция, применяемая к строке, пытается преобразовать эту строку в соответствующее число по обычным правилам приведения. Когда же число используется там, где ожидается строка, это число преобразуется в строку в произвольном подходящем формате.
 
Переменные используются для хранения значений в процессе выполнения программы. До первого явного присвоения значением переменной является nil.  
 
Lua поддерживает параллельное присваивание. В общем случае, оператор присваивания выглядит как список переменных, символ = и список выражений. Элементы списков указываются через запятую.
 
Перед выполнением присваивания список переменных согласовывается по длине со списком выражений. Если список справа длиннее, то его лишние элементы просто отбрасываются. Если короче, то недостающие позиции дополняются значениями nil. Если список операторов оканчивается вызовом функции, то перед согласованием все возвращаемые оттуда значения вставляются в правый список (за исключением случаев, когда вызов взят в скобки).  
Например:
a,b=1
переменной a присваивается 1, b=nil, так как второго значения не существует.
Строка  
 a, b = b, a
является простым способом обмена значениями двух переменных a и b (при "традиционном" способе требуется дополнительная переменная)  
 
Операция получения длины обозначается унарным #. В результате применения операции к строке возвращается количество байт (в обычном понимании это длина строки, в которой каждый символ занимает 1 байт).  
 
Длиной таблицы t считается любой целый индекс n такой, что t[n] не равен nil, а t[n+1] равно nil. Кроме того, если t[1] равен nil, то #t = 0.
 
Запись #table эквивалентна Table.Count(table).
 
Операции сравнения :  ==    ~=    <     >     <=    >=
Эти операции всегда возвращают false или true.  
 
Сравнение на равенство (==) сначала сравнивает типы операндов. Если типы различны, то результатом будет false. Иначе сравниваются значения операндов. Числа и строки сравниваются обычным способом. Объекты (таблицы, пользовательские данные, потоки и функции) сравниваются по ссылке: два объекта считаются равными, только если они являются одним и тем же объектом.
 
Логические операции
В Lua это операции and, or, и not. Так же, как и в управляющих конструкциях (операторы if, while, и repeat), все логические операции рассматривают false и nil как ложь, а все остальное как истину.  
 
Операция отрицания not всегда возвращает false или true. Операция конъюнкции and возвращает свой первый параметр, если его значение false или nil; в противном случае,and возвращает второй параметр. Оператор дизъюнкции or возвращает первый параметр, если его значение отлично от nil и false; в противном случае, or возвращает второй параметр. И and и or вычисляют второй операнд только в случае необходимости.
поэтому такой код будет работать если variable=nil :

Код:
 
if (variable) and variable>0 then
--
else
Dialog.Message("Notice", "Это работает!!!", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
 
 
а такой  

Код:
 
if  variable>0 and (variable) then
--
else
Dialog.Message("Notice", "Это работает!!!", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
 
 
выдаст ошибку при выполнении, потому что будет попытка сравнить несуществующую переменную.
Использование такой конструкции

Код:
if (variable) and variable>0 then
-- тут какой-то код
end

заменяет такую

Код:
if (variable) then
 if variable>0 then
 -- тут какой-то код
 end
end

 
 
В разделе справки How do I (как сделать это) есть много примеров реализации различных задач.

Всего записей: 879 | Зарегистр. 28-09-2003 | Отправлено: 15:40 17-03-2011 | Исправлено: Robby, 15:56 17-03-2011
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Indigo Rose AutoPlay Media Studio (часть 4)
articlebot (05-08-2012 06:20): Лимит страниц, переезжаем сюда


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru