11.01.2023 Views

2_5390937242204112261

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

задать начальное условие (25), условие завершения (меньше, чем 400) и значение инкремента

(50). Мы используем один цикл внутри другого для выполнения задачи

по осям х и у.

Этот пример можно было бы написать многими способами. В данном

случае мы сделали координаты х и у важной частью информации:

мы явно определяем, где круги начинаются и как далеко расположены

один от другого. К решению этой задачи мы могли бы подойти

и с другой стороны: как упоминалось, есть необходимое количество

кругов (64), и программа может сама выяснить, как их распределить,

чтобы они поместились на холсте. Причина выбора нашего решения

в том, что оно лучше соответствует альтернативе копированию

и вставке своего кода создания круга 64 раза и самостоятельного задания

интервалов.

Обработка пользовательского ввода

Все, что мы делали до сих пор, не требовало ввода от пользователя. Пользователь

может щелкать на кругах, но это ничего не даст. Аналогично попытка перетащить

круг не даст никакого эффекта. Давайте немного улучшим интерактивность, разрешив

пользователю выбирать, где будут нарисованы круги.

Важно привыкнуть к асинхронному характеру пользовательского ввода. Асинхронное

событие (asynchronous event) - это событие, момент наступления которого вы не

можете никак контролировать. Щелчок мышью пользователя - это пример асинхронного

события: вы не можете знать, когда пользователь соберется щелкнуть. Конечно,

вы можете попросить его щелкнуть, но когда пользователь щелкнет (и щелкнет ли вообще)

- это его и только его дело. Асинхронные события, являющиеся результатом

пользовательского ввода, имеют интуитивно понятный смысл, но мы рассмотрим намного

менее интуитивно понятные асинхронные события в последующих главах.

Для обработки пользовательского ввода библиотека Paper. j s использует объект

под названием "tool" (инструмент). Если такой выбор имени не кажется вам интуитивно

понятным, то вы находитесь в хорошей компании: я тоже не знаю, почему

разработчики Paper. j s использовали эту терминологию.6 Возможно, вам лучше рассматривать

"tool" (инструмент) как "user input tool" (инструмент пользовательского

ввода). Давайте заменим наш код, рисовавший таблицу кругов, следующим кодом:

var tool = new Tool () ;

tool . onMouseDown = function (event )

var с = Shape .Circle (event . point .x, event .point .y, 20) ;

6 Технический рецензент Мэтт Инман предположил, что разработчики Paper. j s, возможно, были

пользователями Photoshop, знакомыми с инструментами "hand tool'', "direct selection tool" и т.д.

36 Глава 1. Ваше первое приложение

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!