DroidScript

DroidScript
инструменты для мобильной разработки

Рассмотрим общие моменты при работе в DroidScript.

Методы

Названия методов в API DroidScript чувствительно к регистру:

app.AddLayout - будет работать
app.addLayout - вызовет ошибку

Имена методов могут идти:

  • с префиксом Create (создать) - создаёт и возвращает объект или null
  • с префиксом Get (получить) - возвращают значения свойств объекта
  • с префиксом Set (установить) - устанавливают значения свойств объекта
  • с префиксом Is - проверяют состояние свойств, возвращая true или false
  • без префикса - методы действий, например Show - сделать видимым, Hide - скрыть и т.п.

Методы могут быть:

  • без параметров
  • с обязательными параметрами
  • с обязательными и необязательными параметрами
  • с необязательными параметрами

Обязательные параметры нужно указывать всегда в отличие от необязательных. Иначе метод выполнится с ошибкой или не выполнится, что впоследствие приведёт к возникновению исключения. Если опустить необязательные параметры, то соответствующим свойствам объекта будут даны значения по умолчанию.

К необязательным параметрам относятся и опции, но встречаются случаи, когда опция должна быть указана обязательно, иначе возникнет исклоючение.

myObject.Show(); // метод без параметров

myObject.SetSize( width, height ); // метод с двумя обязательными параметрами

myObject.SetPosition( left, top, width, height ); // метод с двумя обязательными (left, top) и двумя необязательными (width, height) параметрами.

app.CreateText( text, width, height, options ); // метод с необязательными параметрами

app.CreateGLView( 1, 1, 'fast2d'); // метод с обязательными параметрами и обязательной опцией

Если нужно указать обязательный числовой параметр без изменения значения свойства, то вводят -1:

myObject.SetSize( 0.1, -1 ); // задаёт ширину объекта равной 0.1, а высота остаётся без изменений

Обязательный параметр может быть любого типа, строка, объект, число, например:

app.CreateLayout( type ); // без указания обязательного строкового аргумента type, который может быть 'linear', 'absolute' или 'frame', объект компоновщика не будет создан.

Параметры в методах перечисляются слева-направо:

обязательные, необязательные, опции

Параметр с опциями задаётся в виде строки с перечисленными через запятую названиями опций. Названия опций не зависят от регистра:

myLay = app.CreateLayout( 'linear', 'left, Top, fillXY' ); // 'linear' - обязательный параметр, 'left, top, fillXY' - необязательный параметр с опциями

Опции могут дополнять работу друг друга или перекрывать её. Если в строке задано несколько опций с противоположным действием, то приоритет отдаётся опциям, действующим по умолчанию, например:

var _myLayout = app.CreateLayout( 'linear', 'right, left, right, fillXY' ); // создаётся компоновщик с выравниванием элементов по левому краю, несмотря на указание опций right.

Для удобства работы со справочной информацией на сайте перед параметрами указан его тип:

  • str - строка
  • float - число
  • int - целое число
  • bool - булево значение (true или false)
  • {} - объект
  • () - перечисление с возможными значениями или указанием типа, например, (str) - строковый тип или ('Show', 'Hide', 'Gone')
  • [] - список или диапазон, например, [str] - список строк, [{}] - список объектов, [(str)] - список значений строкового типа

Здесь перечисление () отличается от списка [()] тем, что в случае использования перечисления необходимо подставить одно из указанных значений, тогда как в случае списка можно указать несколько опций через запятую, как в массиве.

Нестроковый параметр в методах можно указывать в виде строки, что удобно при работе с данными в формате JSON, например:

myObject = app.CreateButton( 'Кнопка', 0.2, 0.2 ); // это работает
myObject = app.CreateButton( 'Кнопка', '0.2', '0.2' ); // это тоже работает

Для методов, возвращающих значения, их тип указан после объявления метода через двоеточее:

myObject.GetText():str

Единицы измерений

В DroidScript используются следующие единицы измерения, принятые в Android:

  • px (pixels) — пиксели. Точки на экране - минимальные единицы измерения;
  • dp (density-independent pixels) — независимые от плотности пиксели. Абстрактная единица измерения, основанная на физической плотности экрана с разрешением 160 dpi. В этом случае 1dp = 1px;
  • dip - синоним для dp. Иногда используется в примерах Google;
  • sp (scale-independent pixels) — независимые от масштабирования пиксели. Допускают настройку размеров, производимую пользователем. Полезны при работе с шрифтами;
  • in (inches) — дюймы, базируются на физических размерах экрана. Можно измерить обычной линейкой;
  • mm (millimeters) — миллиметры, базируются на физических размерах экрана. Можно измерить обычной линейкой;
  • pt (points) — 1/72 дюйма, базируются на физических размерах экрана;

Идентификатор объекта имеет формат "#unsignedInt". При создании первого объекта ему присваивается идентификатор #0, второму #1 и так далее автоинкрементным образом. Если первый и второй объект освободить, то вновь созданный объект получит идентификатор #3.

Объект можно получить по идентификатору через глобальный массив _map (недокументированная возможность) или метод app.GetObjects(). Для более удобной работы с объектами лучше использовать свой глобальный ассоциативный массив объектов:

var objList = [];

objList[ 'Первый' ] = object1;

objList[ 'Второй' ] = object2;

и т.д.

По умолчанию числовые значения при позиционировании объектов, установки и получения отступов и размеров указываются и возвращаются в единицах DroidScript - дробные значения в десятичном формате относительно единицы, которой сопоставлено 100%. Например, ширина объекта 0.1 означает, что он занимает 10% от ширины экрана. Если ширина экрана составляет 800px, то метод GetAbsWidth вернёт значение 80, а GetWidth - 0.1.

Координаты и размеры объекта равны 0 и приобретут значения по умолчанию или заданные значения только после вызова метода app.AddLayout() для компоновщика, которому принадлежит объект. Если нужно получить значения данных свойств до отображения объекта на экране, то его предварительно делают невидимым:

var _myButton = app.CreateButton();
_myButton.SetSize( 0.1, -1 );
_myButton.Hide();

var _myLayout = app.CreateLayout( 'linear' );
_myLayout.AddChild( _myButton );

app.AddLayout( _myLayout );

var _absWidth = _myButton.GetAbsWidth();
alert( 'Ширина кнопки равна ' + _absWidth + 'px' );

_myButton.Show();

Цвет задаётся строкой с его названием или в шестнадцатиричном формате "#argb", где a - прозрачность (чем больше её значение, тем меньше прозрачность), например:

"#ffff0000" - непрозрачный красный цвет
"88ffff00" - полупрозрачный (88) желтый цвет

© 2016 droidscript.ru admin@droidscript.ru