AppScript используется для написания программного кода. Язык включает в себя все привычные программные конструкции и программные элементы, как то:
AppXML-конструкции (тэги) в AppScript рассматриваются как потенциальные объекты, которыми можно манипулировать: создавать, менять их свойства, показывать/скрывать, добавлять внутрь других конструкций (создавая конструкции произвольной сложности) и т.д.
<!-- Пример --> <AppXML title="Моё приложение"> <!-- Все, что находится в этой секции, исполняется сразу (т.е. все объекты, соответствующие тэгам, создаются сразу при запуске программы). --> <main> <action> <![CDATA[ // использование CDATA необязательно, но рекомендовано // AppScript-код в этом тэге выполняется тут же, в момент создания объекта типа action (неименованная функция, удаляется сразу после выполнения) println("Hello, world!"); // используем appscript-метод for(var i = 0; i < 10; i++) { println(i + ". result is " + twicer(i)); // программный объект с id twicer (а попросту - пользовательская функция) будет создан единожды и только в момент первого обращения к нему по id } ]]> </action> <!-- Описываем главное окно приложения (будет создано автоматически, т.к. описание находится внутри <main>) --> <window id="mainWindow"> <panel background-color="green" position="center"> <label text="Hello, world!" color="yellow" font-style="bold" align="center" /> </panel> <button text="Показать заголовок окна" position="top"> <onAction> msg(mainWindow.title); // используем appscript-метод и обращение к атрибуту окна </onAction> </button> <button text="Показать заголовок кнопки" position="bottom"> msg(this.text); // обращаемся через this к объекту, инициировавшему данное событие (здесь инициировано событие onAction, но тэг можно не писать) </button> <button text="Заменить центральную часть" position="left"> mainWindow.addObject(p_1); // используем объектный метод (т.е. метод программного объекта) p_1.visible = !p_1.visible; // при повторном нажатии кнопки панель исчезнет, при следующем - появится и т.д. </button> <button text="Изменить текст" position="right"> l_1.text += " ! "; // будет работать только после нажатия кнопки "Заменить центральную часть", т.к. до этого объект l_1 не будет доступен ни для создания, ни для манипуляций </button> <onCreated> println("Окно с заголовком \"" + this.title + "\" было создано в " + currentTime()); </onCreated> </window> </main> <!-- Все в этой секции будет создаваться по мере обращения к этим тэгам (по id верхних тэгов) --> <common> <!-- Пользовательская функция, увеличивающая входящее значение в два раза. --> <fn id="twicer" args="a"> <![CDATA[ // использование CDATA необязательно, но рекомендовано // AppScript-код этой функции выполняется только при обращении к этой функции по её id (в данным случае twicer) (в отличие от кода внутри <action>) var result = a * 2; // объявляем переменную и сразу её инициализируем return result; // возвращаем результат ]]> </fn> <panel id="p_1" background-color="black" border="line:green" visible="false"> <label id="l_1" text="Hello, another world!" color="white" font-style="bold,italic" align="center" /> </panel> </common> </AppXML>