Возможно, эту статью стоило написать еще до описания компонентов, но тогда мне казалось, что еще можно обойтись, но когда я взялся за описание блоков App Inventor, то понял – написать о применяемых понятиях и принципах необходимо.
Блоки App Inventor представляют собой инструменты для оперирования компонентами и выглядят как пазлы.
С компонентами, более менее, все понятно. А вот с блоками – сложнее: они все такие разноцветные. Что же значат все эти цвета и формы? Как правильно собирать все эти элементы в единую программу?
Блоки в этом конструкторе приложений для Android разбиты на две большие группы по признаку – на что влияют и к чему относятся:
· относящиеся непосредственно к компонентам
· относящиеся к приложению в целом
Начнем с блоков, которые принадлежат компонентам. Их много, но не пугайтесь – они очень однотипны и разобраться с ними весьма несложно.
Их можно разделить на три типа, которые легко различить по цвету:
1. блоки, описывающие свойства компонента. Они зеленого цвета и выглядят так:
этот блок обозначает текущее свойство компонента. На данной картинке приведен блок цвета фона для текстового компонента TextBox1. Он подразумевает получение уже имеющегося значения.
а этот задает требуемое значение компоненту (присвоить TextBox1 фоновый цвет …). «set» — задать. Этот тип блока-свойства можно было бы отнести к командам (обработчикам), поскольку он действительно дает команду изменить какое-либо свойство компонента, в том числе, и значения полей. Однако разработчики App Inventor решили так – все же это и свойства тоже.
2. блоки-события, то есть, те блоки, которые отслеживают наступления какого-либо события в приложении, например, нажатие кнопки и далее запускают блок-команду. Они окрашены в бронзовый цвет и выглядят вот так:
этот блок, например, выполняет действие по нажатии кнопки (когда по Button3 кликнули сделать …)
3. блок-команда, в App Inventor этот блок еще часто называют обработчиком. Этот блок указывает, что нужно сделать с компонентом, к которому принадлежит блок:
Конкретно этот блок вызывает данные из таймера устройства.
Разобранный пример с блоками, принадлежащими компонентам, можно посмотреть в статье «Первое приложение в App Inventor. Программируем блоки.»
Вторая группа блоков, относящихся ко всему приложению, организована несколько иначе.
Для начала вот их список подгрупп:
· Control blocks – управляющие блоки.
· Logic blocks – логические блоки
· Math blocks – математические блоки
· Text blocks – текстовые блоки
· Lists blocks – блоки для управления списками
· Colors blocks – блоки для управления цветом
· Variables blocks – блоки для управления переменными
· Procedures blocks – блоки процедур. Тут нужно пояснить, что в App Inventor процедурой называется единая группа блоков. Подробней в соответствующей статье.
Итак, в чем же их отличия, помимо возлагаемого на них функционала?
Во-первых, имеется цветовая дифференциация штанов по их назначению, то бишь, по подгруппам. Причем, заметьте, ничего общего с цветами из первой группы это не имеет. Да и внутри подгруппы нет разделения по цветам.
Во-вторых, в App Inventor они называются встраиваемыми (Built-in), что соответствует действительности – все они, за исключением Procedures blocks, встраиваются в другие блоки. То есть, они не могут служить изначальным блоком, в отличие от блоков-событий, принадлежащих компонентам – все действия производятся при каких-либо событиях с компонентами.
Вот здесь стоит рассказать еще о типах «пазлов». В оригинальных материалах по App Inventor мне не удалось найти такой типизации (может плохо искал), но надеюсь, моя разбивка по типам окажется недалекой от истины. Хотя бы по смыслу.
Итак, вы, наверное, заметили, что есть пазлы четырех видов.
Из их формы совершенно очевидно, что первым видом начинается любая цепочка в мобильном приложении. Это – событие и вполне логично, что оно инициирует все дальнейшие действия. И этот тип не отличается от принятого в этом конструкторе приложений для Android.
А вот следующие два вида блока по типологии App Inventor относятся к разным типам: свойствам и командам (обработчикам), соответственно. Но по форме пазла и по смыслу их можно было бы отнести к командам, так как они задают действие. Скажем, второй приведенный на картинке пазл даёт команду присвоить компоненту определенное значение, а третий пазл – вызвать компонент с определенным значением. Кроме того, эти пазлы являются «промежуточными», ими нельзя закончить цепочку.
А вот четвертый вид представляет собой конечное значение, существующее или рассчитываемое и им заканчиваются цепочки. Например, четвертая картинка представляет собой текущее значение компонента Clock1.
Вот, наверное, основы архитектуры App Inventor.
С блоками, принадлежащими компонентам, мы уже разобрались и далее про блоки, относящиеся ко всему приложению.