DroidScript
DroidScript
разработка мобильных приложений

Общие методы объектов

DroidScript  
08.12.2016

На этой страницей мы познакомимся с общими методами объектов API и их использованием, после чего многое станет понятно.

Объекты в DroidScript являются наследниками базовых внутренних объектов obj и sobj. От obj производятся видимые элементы, от sobj - все остальные.

sobj имеет всего два метода и одно свойство:

  • Destroy() - освобождает объект

  • Release() - освобождает объект

  • str id - идентификатор объекта вида "#int" (доступен и для записи, но не рекомендуется его изменять)

Интерфейсная часть методов Destroy и Release идентична, и в теле метода Destroy вызывается Release. Эти методы используются для освобождения объектов, разрушаемых вручную. В противном случае они могут остаться в памяти и после завершения работы приложения.

obj имеет больше методов, но также одно свойство:

  • AdjustColor( int hue, int sat, int bright, int cont ) - задаёт цветовой фильтр с оттенком, насыщенностью, яркостью и контрастностью:

    myObject.AdjustColor( 0,-100,-60,0 );
  • Destroy() - освобождает объект

  • Focus() - устанавливает фокус на объект

  • GetAbsHeight():str - возвращает абсолютную высоту объекта в пикселях:

    myObject.GetAbsHeight(); // 0

  • GetAbsWidth():str - возвращает абсолютную ширину объекта в пикселях:

    myObject.GetAbsWidth(); // 0

  • GetHeight( options ):str - возвращает высоту объекта в относительных единицах DS или в пикселях, при заданной опции 'px':

    myObject.GetHeight(); // 0.0
    myObject.GetWidth( 'px' ); // 0 - количество пикселей является целым числом

  • GetLeft( options ):str - возвращает X-координату положения объекта в относительных единицах DS или в пикселях, при заданной опции 'px':

    myObject.GetLeft( 'px ' ); // 80

  • GetPosition( options ):{float left, float top, float width, float height} - возвращает положение и размеры объекта в относительных единицах DS или в пикселях, при заданной опции 'px':

    myObject.GetPosition( 'px ' ).left; // 80

  • GetTop( options ) - возвращает Y-координату положения объекта в относительных единицах DS или в пикселях, при заданной опции 'px':

    myObject.GetTop(); // 0.2

  • GetVisibility():('Show', 'Hide' или 'Gone') - возвращает состояния видимости объекта:

    myObject.GetVisibility(); // Show

  • GetWidth( options ):str - возвращает ширину объекта в относительных единицах DS или в пикселях, при заданной опции 'px':

    myObject.GetWidth( 'px ' ); // 320

  • Gone() - скрывает объект с удалением занимаемой им области

  • Hide() - скрывает объект с сохранением занимаемой им области

  • IsVisible():bool - проверяет, отображается ли объект на экране

  • Release() - освобождает объект

  • SetBackColor( str clr ) - задаёт цвет фона:

    myObject.SetBackColor( '#ff337700' );
    myObject.SetBackColor( 'green' );

  • SetBackGradient( str colour1, str colour2, str colour3, str options ) - задаёт для фона прямоугольный градиент с заданной опциями "bl-tr", "br-tl", "left-right", "right-left", "tl-br", "top-bottom", "tr-bl" ориентацией:

    myObject.SetBackGradient( "#ffffff00","#ffaa0000","#ffff4444", "bl-tr" );

  • SetBackGradientRadial( float x, float y, float radius, str colour1, str colour2, str colour3, (str) options ) - задаёт для фона радиальный градиент. Ориентация задаётся опциями:
    • "bl-tr"
    • "br-tl"
    • "left-right"
    • "right-left"
    • "tl-br"
    • "top-bottom"
    • "tr-bl":

    myObject.SetBackGradientRadial( 0.5, 0.5, 0.5, "#ffff0000", "#ffaa0000", "#ffff4444" );

  • SetBackground( str file, (str) options ) - задаёт изображение в качестве фона, которое может повторяться при использовании опции "repeat":

    myObject.SetBackground( ''myImage.png' );

  • SetColorFilter( str clr, str mode ) - устанавливает цветовой фильтр с использованием цвета и режима наложения:

    myObject.SetColorFilter( '#ffff0000', 'Add' );

    SetMargins( float left, float top, float right, float bottom, ('px','sp','dip','mm','pt') mode ) - задаёт внешние отступы до границ объекта в относительных единицах DS или заданных:

    myObject.SetMargins( 0, 0, 0, 0.1 ); // задаётся отстут до правой границы равный 10% от ширины экрана

  • SetPadding( float left, float top, float right, float bottom, 'px','sp','dip','mm','pt' mode) - задаёт внутренние отступы от границ объекта в относительных единицах DS или заданных:

    myObject.SetPadding( 0.1, 0.1, 0.1, 0.1 ); // задаются отступы от всех сторон

  • SetPosition( float left, float top, float width, float height, [(str)] options ) - устанавливает положение и размер объекта, если указаны width и height в относительных единицах DS или пикселях при заданной опции 'px':

    myObject.SetPosition( -1, 0.2 ); // изменяется только y-координата объекта
    myObject.SetPosition( 0.1, 0.1, 0.3, 0.2 ); // изменяется положение и размеры объекта

  • SetScale( float x, float y ) - задаёт масштаб объекта по горизонтали и вертикали относительно центра объекта (1 - оригинальный размер, -1 - зеркальное отображение):

    my.Object.SetScale( 2,2 ); // увеличивает объект в 2 раза

  • SetSize( float width, float height, ('px','sp','dip','dp','mm','pt') options ) - устанавливает размер объекта в относительных единицах, по умолчанию, или пикселях при заданной опции 'px':

    myObject.SetSize( 0.3, -1 ); // ширина 0.3, высота не изменяется

  • SetVisibility( (str) mode ) - задаёт видимость объекта ('Show', 'Hide' или 'Gone'):

    myObject.SetVisibility( 'Gone' ); // скрывает объект без сохранения занимаемой области

  • Show() - отображает объект

  • str id - идентификатор объекта вида "#int" (доступен и для записи, но не рекомендуется его изменять)

Несложно заметить, что эти методы частично переcекаются со стилями CSS, но не все имеют симметричные методы Set и Get для установки и чтения свойств. Например, можно установить цвет фона объекта, но метода для его получения нет. Расширить возможности объектов можно разными путями.

Самый простой способ - добавить объекту свойство, и обновлять его до вызова метода SetBackColor, например:

Object.color = "green";
Object.SetBackColor( Object.color );

Недостатками данного способа является прямой доступ к свойству, дублирование кода и необходимости присватвания всем объектам, которым нужна данная функциональность.

Более эффективным решением будет создание объекта стиля с требуемой функциональностью и дополнение им нужные объекты

Пример 1. Использование объекта стиля.

Абсолютное позиционирование объектов при помощи метода SetPosition можно осуществить только внутри компоновщика с типом компоновки 'absolute' или 'frame'. При использовании компоновщика линейного 'linear' типа можно осуществить только относительное позиционирование объектов при помощи установки отступов методом SetMargins.

Посмотреть работу описанных выше методов можно на примере ниже, добавив их объекту _txtMsg.

Выполнить

К общим методам также относится:

  • GetType():(str) - возвращает тип объекта в виде строки с названием объекта

Объекты, в которых используется текст, дополнены следующей группой методов:

  • GetText():str - возвращает текст

  • SetText( str text ) - устанавливает текст:

    myObject.SetText( 'Это кнопка' );

  • GetHtml():str - возвращает текст с тегами

  • SetHtml( str html ) - устанавливает текст с тегами:

    myObject.SetHtml( '<u>Это</u> <i>текст<i>' );

  • SetTextColor( str clr ) - задаёт цвет надписи:

    myObject.SetTextColor( '#8800ff00' ); // полупрозрачный зелёный цвет

  • SetFontFile( str file ) - задаёт файл шрифта:

    myObject.SetFontFile ( 'digi.ttf' );

  • SetTextShadow( float radius, float dx, float dy, str color ) - задаёт тень надписи заданного радиуса действия, смещения и цвета:

    myObject.SetTextShadow( 2, 1, 1, ''#ff333333' );

  • GetTextSize( (str) mode ):float - возвращает размер шрифта надписи в единицах DS по умолчанию или заданных опцией mode ( 'px','dip','sp','mm', 'pt'):

    myObject.GetTextSize( 'sp' ); // 16

  • SetTextSize( float size, (str) mode ) - задаёт размер шрифта надписи в единицах по умолчанию или заданных опцией mode ( 'px','dip','sp','mm', 'pt' ):

    myObject.SetTextSize( 16 );
DroidScript  
© 2016-2022  Александр Страшко