عبارات بسازید

WFF از یک زبان بیان برای فعال کردن موارد زیر استفاده می‌کند:

  • تغییر ظاهر با استفاده از Transform یا Gyro
  • رفتار شرطی از طریق دستورات Condition
  • قالب‌بندی رشته در عناصر Template

زبان عبارت، یک زبان اسکریپت‌نویسی است که شامل عملگرهای معمول شما و طیف وسیعی از توابع قابل استفاده است.

عبارات می‌توانند از منابع داده - که با استفاده از براکت نمایش داده می‌شوند - استفاده کنند تا به شما امکان دهند به ورودی‌های خارجی مانند تاریخ و زمان فعلی، معیارهای سلامت و تناسب اندام یا حتی آب و هوا واکنش نشان دهید.

هنگام استفاده از عبارات، تفاوت اصلی بین استفاده از Transform ، Template و Condition این است که Transform و Template مستلزم آن هستند که عبارت منجر به یک مقدار شود (برای مثال، موقعیت جدید عنصر محصور کننده) در حالی که Condition مستلزم آن است که عبارت منجر به یک مقدار بولی شود.

هنگام استفاده در عنصر Condition ، عبارت را به عنوان یک عنصر متنی مشخص کنید. عبارت را در یک عنصر CDATA قرار دهید تا از نیاز به استفاده از ارجاعات موجودیت، مانند " و & جلوگیری شود.

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

این مقدار به صورت بولی ارزیابی می‌شود و با استفاده از منبع داده DAY_OF_WEEK تعیین می‌کند که آیا آخر هفته است یا خیر.

توابع نیز پشتیبانی می‌شوند - برای مثال، عبارتی برای چرخش یک مقدار تا ۵ درجه در هر دو جهت - که بر اساس x-value شتاب‌سنج دستگاه Wear OS است:

(5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5.0/90.0)*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: Minimizes re-evaluation (1 = PM, 0 = AM) -->
[AMPM_STATE] == 1

مقادیر پیکربندی در عبارات

علاوه بر توابع و منابع داده، می‌توان از مقادیر پیکربندی نیز استفاده کرد. برای مثال، اگر در UserConfigurations یک BooleanConfiguration با نام showBackgroundInAfternoon تعریف شده باشد، می‌توان از آن در یک عبارت استفاده کرد:

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