Макинтош и образование:Макинтош:AppleScript:Обработчики |
< предудущая - содержание - следующая > ОбработчикиРеакция объекта на то или иное событие описывается подпрограммой-обработчиком (handler). В простейшем случае они оформляются вот так: Вот, например, как можно осуществить поиск наименьшего числа в заданном списке: Обратите внимание: если обработчик должен возвращать какой-либо результат, это делается с помощью оператора Return. Таких операторов может быть и несколько, выполнение любого из них будет завершать работу обработчика. (Замечу, что можно обойтись и без Return. В этом случае будет возвращен результат последнего исполненного оператора. Но не рекомендую так делать -- если не хотите лишних проблем в процессе отладки скриптов) Иногда разработчику скрипта бывает удобнее вместо упорядоченной записи параметров воспользоваться метками (в результате вызов обработчика становится более похожим на естественную английскую фразу). Оформляется подпрограмма с помеченными параметрами следующим образом: Имена меток можно выбирать какие угодно, но есть некоторое количество наиболее распространенных, использование которых упрощено. Среди этих спецметок: При вызове такого обработчика порядок фактических параметров (за исключением "непосредственного" -- непомеченного, который должен всегда идти первым) роли не играет. Для логических параметров можно при вызове вместо указания значений "false" или "true" ставить перед соответствующей меткой соответственно " Например, несколько модифицируем подпрограмму поиска минимума, чтоб она могла при необходимости округлить полученный результат: Вызвать ее можно будет либо так: В скриптах, сохраненных как приложения (Application либо, в новом ScriptEditor, Classic Applet/MacOS X Applet) используются обработчики для нескольких системных событий. Во-первых, любая программа при запуске получает сообщение "run". Обработчик для него можно специально не оформлять, так как по умолчанию им считается все, что не входит ни в какие другие обработчики. Следующее событие -- "open". Его обработчик -- основной элемент дроплетов -- оформляется вот так: Еще два события могут обрабатываться только "остающимися открытыми" (stay open) апплетами. Наиболее важное из них -- "idle" -- периодически передается программе, если не происходит никаких других внешних событий. Это очень удобно, если Вы хотите заставить компьютер выполнять в фоновом режиме какую-либо операцию через определенные промежутки времени. Обработчик не имеет никаких параметров: Есть здесь одна тонкость. Первоначально пауза между событиями idle устанавливается в 30 секунд, а затем (Внимание!) -- приравнивается значению, возвращенному обработчиком (если это -- число). Поэтому, чтобы избежать непредсказуемого поведения скрипта, рекомендую последним оператором обработчика записывать return -- естественно, с параметром-числом, равным необходимому интервалу в секундах. Обработчик еще одного события -- "quit". (На всякий случай, подскажу: можно завершить скрипт, минуя обработчик quit, если нажать Command-Shift-Q) Этот обработчик предназначен для тех случаев, когда нужно, например, подстраховаться от случайного завершения программы: Обратите внимание: чтоб апплет мог корректно завершиться, в обработчике обязательно должен выполниться оператор "continue quit". |