Для большей наглядности дополним анимационное представление поведения мяча так, чтобы при отскоке мяча его цвет на мгновение изменялся на красный. Для этого нужно зафиксировать момент отскока (запомнить значение момента времени наступления этого события) и установить красным цвет шара в анимации на небольшой интервал времени, следующий за этим моментом.
Введите сначала переменную tBounce, которая будет фиксировать момент отскока. Для этого сделайте активным окно структуры активного объекта
Ball и перенесите внутрь ограничивающего прямоугольника иконку (Переменная), щелкнув левой кнопкой мыши сначала по этой иконке на инструментальной панели, а потом в окне. В поле Имя открывшегося окна свойств этой переменной введите tBounce, а в поле Начальное значение введите -1 (рис. 4.10).
Для того чтобы переменная tBounce фиксировала момент отскока, нужно значение текущего времени в модели при наступлении события "отскок" запомить в этой переменной. За наступлением данного события следит
стейтчарт, поэтому сделайте активным окно стейтчарта (рис. 4.11), в нем выберите переход и в поле Действие [перехода] добавьте действие:
tBounce = getTime();
При каждом вызове функция getTime дает текущее значение модельного времени.
Переменная tBounce имеет начальное значение -1 и при работе модели хранит значение момента времени последнего отскока. Для того чтобы каждый раз при отскоке мяча его цвет изменялся на красный (скажем, в течение 0.1 с), нужно установить в поле Цвет заливки графического изображения мяча в окне анимации динамическое значение цвета (рис. 4.12):
getTime () < ball.tBounce+0.1? Color.red: Color.blue
Это условное выражение устанавливает цвет заливки изображения мяча ball красным в течение 0.1 с после каждого отскока.
Введение второго мяча в модель
Введите в модель второй мяч. Для этого сделайте активным окно структурной диаграммы Root и перенесите в него еще один экземпляр мяча, щелкнув левой кнопкой мыши сначала по имени Ball в окне проекта, а потом в окне структурной диаграммы Root. Появившийся объект автоматически получит имя ball1 (рис. 4.13). При этом справа откроется окно свойств выделенного объекта (нового экземпляра мяча), в котором установлены те значения параметров мяча, которые были определены для активного объекта Ball.
Установите начальные значения х0 и у0 координат х и у нового мяча равными 200 и 300 (рис. 4.14).
Чтобы движение нового мяча отобразить в анимации, в окне анимации продублируйте изображение мяча. Для чего нажмите левой кнопкой мыши на изображении мяча и при нажатой клавише <Ctrl> перенесите это изображение в другое место поля анимации. Для нового изображения круга в правой части окна редактора появится окно свойств, в котором динамические значения параметров (координат и цвета) связаны с характеристиками шара ball1.
Их нужно связать с новым объектом — шаром с именем ball1 Иными словами, вместо ball.x, ball.у и bail.tBounce в соответствующих полях нужно поставить bell1.х, ball1.y и ball1.tBounce (рис. 4.15). Точно также на вкладке Овал этого окна для значения радиусов Радиус 1 и Радиус 2 нужно установить ball1.r вместо ball.r.
Запустите модель. В модели теперь будут имитироваться независимые движения двух шаров. Построенная вами модель должна соответствовать модели Balls1 папки Part I.