WFF از یک زبان عبارت برای فعال کردن استفاده می کند:
- تغییر شکل ظاهری با استفاده از
Transform
یاGyro
- رفتار مشروط از طریق عبارات
Condition
- قالب بندی رشته در عناصر
Template
زبان عبارت یک زبان برنامه نویسی است که شامل عملگرهای معمولی شما و طیف وسیعی از توابع قابل استفاده است.
عبارات می توانند از منابع داده استفاده کنند - که با استفاده از براکت نشان داده می شوند - تا به شما اجازه دهند به ورودی های خارجی مانند تاریخ و زمان فعلی، معیارهای سلامت و تناسب اندام یا حتی آب و هوا واکنش نشان دهید.
هنگام استفاده از عبارات، تفاوت اصلی بین استفاده از Transform
یا Template
و Condition
این است که Transform
و Template
نیاز دارند که عبارت به یک مقدار منجر شود (به عنوان مثال، موقعیت جدید عنصر محصور) در حالی که Condition
نیاز دارد که عبارت به یک Boolean منجر شود.
برای مثال، یک 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()
یک مقدار را در دو کران محدود می کند.
ارزیابی مجدد بیان
فرکانس ارزیابی مجدد عبارات به منابع داده استفاده شده در آنها بستگی دارد. برای مثال، [ 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
مقادیر پیکربندی در عبارات
علاوه بر توابع و منابع داده، می توان از مقادیر پیکربندی نیز استفاده کرد. برای مثال، اگر در UserConfigurations یک BooleanConfiguration
با نام showBackgroundInAfternoon
تعریف شده باشد، می توان از آن در یک عبارت استفاده کرد:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1