Урок 9. Использование библиотеки объектов

Когда мы добавляем кем-то ранее подготовленный объект из библиотеки Scratch (кнопка Выбрать новый объект из файла), то, можно сказать, импортируем его в наш проект. Однако мы с таким же успехом можем делать обратное: из рабочего проекта Scratch добавлять объект в общую библиотеку. Это можно назвать экспортомобъектов. Потом наш объект можно использовать в других проектах наряду с другими стандартными (существующими до этого) объектами.

Если к объекту был "привязан" программный код, то они экспортируются и импортируются совместно. Мы это уже видели в уроке 6 "Рисование в Scratch", когда взятый их коллекции объектов карандаш имел при себе небольшой скрипт. Теперь попробуем сделать обратное — добавим в библиотеку созданный нами на прошлом занятии смайлик. Сделать это можно так:

  1. Открыть проект, содержащий интересующий нас объект.
  2. Выделить объект.
  3. В меню выбрать команду Файл ? Экспорт объекта....
  4. В открывшемся диалоговом окне выбирать место для сохранения, ввести название файла и нажать ОК. Для собственных объектов желательно создать отдельную папку.

После того как объект экспортирован, его можно добавлять в новые проекты Scratch с помощью кнопки Выбрать новый объект из файла. Экспортируйте смайлик, затем создайте новый проект и добавьте в него этот объект.

Скрипт смайлика в новом проекте появится, однако работать не будет, т.к. в старом проекте он зависел от работы сценария другого объекта. В этом нет ничего страшного. Программу всегда можно дописать, переписать, либо удалить. Хотя обычно экспортируют достаточно независимые от других объектов спрайты, которые после импорта сразу же можно использовать.

Обычно начинающие программисты после того, как познакомятся с основами программирования на том или ином языке, изучают программы других, более опытных, коллег. Таким образом можно быстро приобрести опыт, узнать много нового, познакомиться с принятыми в сообществе принципами разработки и наилучшими способами решения тех или иных задач.

Рассмотрим некоторые объекты со скриптами, которые уже есть в стандартной библиотеке.

Hungry fish (голодная рыба)

fish.png

У этого объекта очень простая программа. После запуска рыбка начинает преследовать указатель мыши. В коде программы можно отметить лишь одну особенность: объект останавливается, когда расстояние до курсора становится меньше, чем 10 точек. Это очень незначительное расстояние, поэтому рыба останавливается, когда касается курсора почти своим центром. Если увеличить это расстояние до можно добиться эффекта, когда объект останавливается, не доходя до курсора. Иногда именно это и требуется.

Jump-flip monster (кувыркающийся монстр)

monster.png

У монстра более интересная программа, чем у рыбы. Он совершает один кувырок при однократном нажатии стрелки вправо на клавиатуре. Разберемся, почему?

Первый скрипт (тот, который выше), заставляет объект сначала переместиться вперед на 50 точек и вверх на 100, а затем снова вперед на 50 и уже вниз на 100. Получается, что монстр как бы прыгает вперед. Команда повернуть в направлении 90 просто устанавливает правильную ориентацию объекта перед движением.

Второй скрипт работает параллельно с первым. Он придает объекту вращательное движение. За одно нажатие стрелки вправо объект совершает 10 поворотов по 36 градусов, что в итоге составляет 360 градусов, а это, как известно, полный оборот вокруг своей оси. Кроме того, полный оборот совершается ровно за 2 секунды (0.2 * 10). Именно столько выполняется первый скрипт. Поэтому получается синхронность: за один прыжок объект совершает один полный оборот.

Friction marble (трущийся камень)

ball.png

Чтобы понять, как работает эта программа, надо немного разбираться в физике. Когда мы толкаем какой-то предмет горизонтально (допустим, мяч), то обычно он останавливается через некоторое время. Это происходит из-за трения о грунт. Если мы постоянно будем толкать мяч, то скорость его движения будет постепенно увеличиваться.

Программа для объекта friction_marble как раз и моделирует эти физические законы. Чем больше мы жмем на стрелку, тем большую скорость развивает шар. При прекращении воздействия его скорость постепенно уменьшается, после чего шар останавливается.

С помощью чего это достигается в программе?

В программе существуют две переменные — x velocity и y velocity, значения которых сразу после запуска программы приравнивается к нулю. Значения этих переменных постоянно (всегда) влияют на то, насколько единиц будет изменяться положение объекта.

Когда нажимаются клавиши со стрелками, то значения переменных меняются. Чем больше нажимается определенная стрелка, тем больше значение переменной отклоняется от нуля. В результате то количество единиц, на которые меняются x и yтакже увеличивается. Это создает эффект увеличения скорости перемещения объекта.

С другой стороны, когда воздействие отсутствует (клавиши не нажимаются), значение переменных постепенно приближается к нулю. Этот достигается за счет умножения на десятичное число от 0 до 1 (в нашем случае переменные умножаются на 0.98).

Самостоятельная работа

Создайте два-три оригинальных объекта с программами и экспортируйте их в общую библиотеку.

Создано