Итак, приступаем! Писать будем на скриптовом языке, интерпретатор которого встроен внутрь AstroManta. Язык этот BeanShell. Язык основан на Java, но если вы его не знаете, то ничего страшного (он очень похож на Си, синтаксис явный и простой) Большая часть будет одинаково работать как на мобильной версии для Android так и для стационарной версии. Можно даже использовать стационарную версию программы для отладки скриптов. Разница будет только при работе с пользовательскими элементами (меню, кнопки итд итп), а вся расчетная часть везде одинаковая.

В любой программе должна быть точка старта. Например в C это функция main(), в Java метод main(). Работа AstroManta начинается с загрузки и старта скрипта из файла start.bsh. Этот файл как и многие другие, сначало ищется в директории data/ а если не находится - внутри jar файла программы (а там он есть всегда). Таким образом можно модифицировать работу программы - просто создавая нужные файлы в директории data (они будут перекрывать внутренние). Давайте это проверим! Создайте директорию data и положите туда пустой файл start.bsh. Теперь запускаем программу. Получаем такой результат:

 

 

Все правильно. Стартовый скрипт оказался пустой и ничего не добавил. Давайте сделаем классический HelloWorld - разберемся как выводить информацию (нам это пригодится хотя бы для отладки ;) Добавьте в наш скрипт такие строчки:

import ru.strijar.astro.*;
import ru.strijar.astro.listener.*;
import ru.strijar.astromanta.pc.*;
import ru.strijar.astromanta.pc.gui.*;

Info.out("Здравствуй, HTML мир!");
Sys.toast("Короткое приветствие");

 Теперь закройте программу если она у вас еще запущена и запустите снова. Если вы все сделали правильно результат будет такой:

Разберемся. Первые 4 строки импортируют классы из пакетов AstroManta. В данном случае мы их не используем, но потом они нам могут пригодиться. Дальше идет вызов метода out уже созданного внутри программы (он один) класса Info Метод просто выводит всю строку в области информации. Эта область примечательна тем что умеет использовать HTML форматирование текста. Т.е. оформлять таблицы, вставлять рисунки, выделять текст цветом и так далее.

Следующая строка обращается к методу toast класса Sys (он тоже один в программе). Этот метод выводит небольшое всплывающее окно с текстом, которое через некторое время само закрывается.

Замечательно, выводить информацию научились. Но иногда ее надо и вводить. Добавим в скрипт:

String name = Sys.getString(i18n.get("Ваше имя"), "AstroManta");

if (name != null && name.length() > 0) {
    Info.out("Здравствуй, " + name + "!");
}

Перезапустим программу. И видим изменения:

Если ввести любое слово и нажать ОК в области информации произойдут изменения. Скриншот прикладывать не буду - попробуйте сами (; Теперь поясню. Здесь идет вызов метода getString Это самый простой способ получить строку текста. Но не единственный! Скриптовый язык в AstroManta имеет полный доступ к Java (и Android в мобильной версии) поэтому можно строить полноценные меню, диалоговые окна итд итп. Вернемся к методу getString() - он выводит окно с заданым заголовком и значением строки по умолчанию. При нажатии OK возвращает эту строку, а при закрытии окна или нажатии Cancel возвращает значение null. Это мы и проверяем. Ну и смотрим не ввел ли пользователь пустую строку (она хоть и не null, но длина ее равну нулю)

На этом пока все. Домашнее задание - почитать API и документацию к BeanShell (;

Комментарии  

# DoReMi 23.09.2015 07:53
Скрипт с русскими словами нужно в кодировке UTF-8.
# Belousov Oleg 23.09.2015 12:17
Вообще да. Но правильней так - он должен быть в той же кодировке, что указана при запуске jar файла. Если не указана кодировка, то в той кодировке что и локаль.

У вас нет прав чтобы комментировать