สร้างนิพจน์

WFF ใช้ภาษานิพจน์เพื่อเปิดใช้สิ่งต่อไปนี้

  • การเปลี่ยนรูปลักษณ์โดยใช้ Transform หรือ Gyro
  • ลักษณะการทํางานแบบมีเงื่อนไขผ่านคำสั่ง Condition
  • การจัดรูปแบบสตริงในองค์ประกอบ Template

ภาษานิพจน์เป็นภาษาสคริปต์ที่มีโอเปอเรเตอร์ทั่วไปและฟังก์ชันต่างๆ ที่ใช้ได้

นิพจน์สามารถใช้แหล่งข้อมูลซึ่งแสดงด้วยวงเล็บเหลี่ยมเพื่อให้คุณตอบสนองต่ออินพุตภายนอก เช่น วันที่และเวลาปัจจุบัน เมตริกด้านสุขภาพและการออกกำลังกาย หรือแม้แต่สภาพอากาศ

เมื่อใช้นิพจน์ ความแตกต่างหลักระหว่างการใช้ Transform หรือ Template กับ Condition คือ Transform และ Template กำหนดให้นิพจน์แสดงผลเป็นค่า (เช่น ตำแหน่งใหม่ขององค์ประกอบที่ล้อมรอบ) ส่วน Condition กำหนดให้นิพจน์แสดงผลเป็น บูลีน

เช่น Condition อาจใช้

[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7

ซึ่งจะประเมินเป็นบูลีนและระบุว่าเป็นช่วงวันหยุดสุดสัปดาห์หรือไม่โดยใช้แหล่งข้อมูล DAY_OF_WEEK

ระบบยังรองรับฟังก์ชันด้วย เช่น นิพจน์สำหรับการหมุนค่าได้สูงสุด 5 องศาในทิศทางใดทิศทางหนึ่ง โดยอิงตาม x-value ของอุปกรณ์ Wear OS ที่ใช้เซ็นเซอร์ตรวจจับความเคลื่อนไหว

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

ฟังก์ชัน clamp() จะจำกัดค่าให้อยู่ภายในขอบเขต 2 ขอบเขต

การประเมินนิพจน์อีกครั้ง

ความถี่ในการประเมินนิพจน์อีกครั้งจะขึ้นอยู่กับแหล่งข้อมูลที่ใช้ในนิพจน์ เช่น นิพจน์ [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 จะประเมินใหม่ก็ต่อเมื่อเริ่มวันใหม่เท่านั้น อย่างไรก็ตาม นิพจน์ที่ใช้แหล่งข้อมูล [SECOND] จะประเมินใหม่ทุกวินาที

การประเมินอีกครั้งอาจส่งผลให้มีการคำนวณฉากใหม่และการแสดงผลใหม่ โดยอิงตามการเปลี่ยนแปลงของผลลัพธ์ของนิพจน์ ดังนั้น คุณจึงควรใช้แหล่งข้อมูลที่มีการประเมินใหม่ให้น้อยที่สุดเสมอ เช่น หากต้องการระบุว่าเป็นช่วงบ่ายหรือไม่ ให้ทำดังนี้

// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200

// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1

ค่าการกําหนดค่าในนิพจน์

นอกเหนือจากฟังก์ชันและแหล่งข้อมูลแล้ว คุณยังใช้ค่าการกําหนดค่าได้ด้วย ตัวอย่างเช่น หากมีการกําหนด BooleanConfiguration ชื่อ showBackgroundInAfternoon ใน UserConfigurations คุณจะใช้ในนิพจน์ได้ดังนี้

[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1