Membuat ekspresi

WFF menggunakan bahasa ekspresi untuk mengaktifkan:

  • Mengubah tampilan menggunakan Transform atau Gyro
  • Perilaku bersyarat melalui pernyataan Condition
  • Pemformatan string dalam elemen Template

Bahasa ekspresi adalah bahasa skrip yang berisi operator umum dan berbagai fungsi yang dapat digunakan.

Ekspresi dapat menggunakan sumber data—yang ditampilkan menggunakan tanda kurung siku—untuk memungkinkan Anda bereaksi terhadap input eksternal seperti tanggal dan waktu saat ini, metrik kesehatan dan kebugaran, atau bahkan cuaca.

Saat menggunakan ekspresi, perbedaan utama antara penggunaan Transform, Template, dan Condition adalah bahwa Transform dan Template memerlukan ekspresi untuk menghasilkan nilai (misalnya, posisi baru elemen penutup) sementara Condition memerlukan ekspresi untuk menghasilkan boolean.

Jika digunakan dalam elemen Condition, tentukan ekspresi sebagai elemen teks. Bungkus ekspresi dalam elemen CDATA untuk menghindari kebutuhan menggunakan referensi entitas, seperti " dan &.

<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>

Ini dievaluasi ke boolean dan menentukan apakah itu akhir pekan atau tidak, menggunakan sumber data DAY_OF_WEEK.

Fungsi juga didukung—misalnya, ekspresi untuk memutar nilai hingga 5 derajat ke salah satu arah—berdasarkan x-value akselerometer perangkat Wear OS:

(5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

Fungsi clamp() membatasi nilai dalam dua batas.

Evaluasi ulang ekspresi

Frekuensi evaluasi ulang ekspresi bergantung pada sumber data yang digunakan di dalamnya. Misalnya, ekspresi [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 hanya dievaluasi ulang saat hari baru dimulai. Namun, ekspresi yang menggunakan sumber data [SECOND] dievaluasi ulang setiap detik.

Evaluasi ulang dapat menyebabkan penghitungan ulang dan rendering ulang adegan, berdasarkan perubahan hasil ekspresi. Oleh karena itu, penting untuk selalu menggunakan sumber data yang dievaluasi ulang sesering mungkin. Misalnya, untuk menentukan apakah saat ini siang:

<!-- BAD: Re-evaluates every second -->
[SECONDS_IN_DAY] > 43200

<!-- Good: Minimizes re-evaluation (1 = PM, 0 = AM) -->
[AMPM_STATE] == 1

Nilai konfigurasi dalam ekspresi

Selain fungsi dan sumber data, nilai konfigurasi dapat digunakan. Misalnya, jika di UserConfigurations, BooleanConfiguration bernama showBackgroundInAfternoon telah ditentukan, BooleanConfiguration ini dapat digunakan dalam ekspresi:

<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>