Создайте первый спидометр
Сделайте счетчик, показывающий скорость и единицы измерения. Узнайте, как main(), Text и VStack используются в полном скрипте, просмотрите внешний вид и сохраните его на панели управления.
{ value: 42.3, unit: "km/h" }1. Создайте прибор и выберите скорость
Откройте Ещё(…)→ Свои приборы на панели управления и выберите Добавить прибор. Новый счетчик уже оснащен входом базовой скорости.
- Нажмите на имя в верхней части редактора, перейдите к Настройки прибора и назовите его «My Speed».
- Нажмите шестеренку рядом с Привязки входных данных, чтобы открыть Настройка параметров. Проверьте ввод скорости: идентификатор
speed, тип Основные данные, источник Скорость. Если он отсутствует, используйте Добавить параметр для создания нового. - Нажмите Готово, чтобы вернуться и сохранить настройки, затем вернитесь в область редактирования.
Скрипт считывает скорость через $data.current.speed; здесь имена полей берутся из входного идентификатора. Редактор предоставляет подсказки по типам, как определено. В этом примере не требуется привязка OBD.
2. Вставьте весь код
Замените все исходное содержимое области редактирования полным кодом ниже. Не заключайте его в другой main(). В этом примере имеется только одна функция входа.
Давайте пока оставим код прежним. Он будет считывать текущую скорость каждый раз, когда ее нужно будет отрисовать, располагать значения и единицы измерения вверх и вниз; если показания отсутствуют, отображается горизонтальная линия. В следующем разделе это объясняется в порядке выполнения.
function main() {
const speed = $data.current.speed;
return (
<VStack spacing={8}>
<Text fontSize={64} color={$env.foreground}>
{speed?.value == null ? '—' : Math.round(speed.value)}
</Text>
<Text fontSize={16} color={$env.accent}>
{speed?.unit ?? $env.speedUnit}
</Text>
</VStack>
);
}
Как код превращается в прибор
Сначала посмотрите на данные, затем на картинку. Предположим, на этот раз speed — это { value: 42.3, unit: "km/h" }:
const speed = $data.current.speedПрочтите это. Здесьspeed— это объект, содержащий числовые значения и единицы измерения, а не само число.speed?.value == nullпроверяет отсутствие тестов. Если объект не существует или значение пустое, выбирается'—'; когда значение равно0, эта ветвь не будет использована.Math.round(speed.value)округляет42.3до42и передает его первомуTextдля отображения. Округление влияет только на отображение этого счетчика и не изменяет исходные показания.- Второй
Textотображаетspeed.unit. Если в данный момент единиц измерения нет,?? $env.speedUnitиспользует единицу измерения скорости текущей среды отображения. VStackразмещает два текста один над другим, аspacing={8}управляет расстоянием между ними.
$env.foreground и $env.accent предоставляют текст и цвета акцентов для текущей темы. Эти цвета будут обновляться при изменении темы.
Не используйте speed?.value || '—' для определения отсутствия тестов: JavaScript будет рассматривать действительные нули как ложные значения, что приведет к неправильному отображению горизонтальной линии при парковке.
3. Проверьте внешний вид
Нажмите Предпросмотр в нижней части редактора. Вы должны увидеть большее число скорости вверху и меньшие единицы в нижнем ряду. Числа в предварительном просмотре представляют собой смоделированные значения, которые не требуют запуска автомобиля и не обязательно равны скорости, измеренной мобильным телефоном в данный момент.
Затем внесите три небольшие модификации и каждый раз просматривайте:
| Исправлять | Изменения, которые вы должны увидеть |
|---|---|
fontSize={64} изменен на 48 |
Основное число становится меньше. |
spacing={8} изменен на 16 |
Числа и единицы находятся дальше друг от друга. |
Цвет основного номера изменен на $env.accent. |
Используйте акцентные цвета для основных цифр. |
Ознакомьтесь с различными размерами, а также светлыми и темными темами. Если контент обрезан до определенного размера, сначала уменьшите размер шрифта или интервал, а затем наблюдайте. Не используйте большое количество смещений x/y, чтобы скрыть проблемы с компоновкой.
При возникновении ошибки верните ее в исходное состояние и проверьте по номеру строки в журнале. При предварительном просмотре верхний правый угол — Журнал; после закрытия предварительного просмотра и возврата в состояние редактирования правый верхний угол возвращается к Сохранить. Успешный предварительный просмотр означает только то, что этот набор входных данных моделирования может быть отображен, а фактические данные необходимо проверить на следующем этапе.
4. Сохраните и добавьте на панель
Закройте предварительный просмотр, нажмите Сохранить, выйдите из редактора и найдите «My Speed» в библиотеке инструментов. Откройте Ещё(…)→ Редактировать панель приборов еще раз, нажмите +, чтобы добавить его, и, наконец, нажмите Готово.
В этот момент карта изменится и начнет считывать фактическую скорость. Вы можете поместить его и встроенный измеритель скорости на одну страницу для проверки: когда они используют одно и то же базовое поле скорости, значения должны совпадать; из-за различных методов сохранения десятичных дробей отображение может немного отличаться.
| Фактический дисплей | Следующий шаг |
|---|---|
0 и единица измерения скорости |
Нулевая скорость достигнута, и нет необходимости исправлять недостающую логику тестирования. |
— |
Вернитесь к настройкам, чтобы подтвердить, что выбрана скорость, а затем проверьте разрешения на позиционирование и текущие сигналы. |
| В библиотеке счетчики есть, а на странице нет. | Шаг «Редактировать панель → Добавить» еще не завершен. |
| Только на превью есть цифры | Предварительный просмотр представляет собой симулированный ввод; перейдите к проверке фактического источника данных. |
На этом этапе первый инструмент готов. В следующей статье замените «получить скорость» на «получить свой собственный параметр OBD», и код макета и отображения можно будет продолжать использовать.