يستخدم 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()
قيمة ضمن حدَّين.
إعادة تقييم التعبير
يعتمد معدّل تكرار إعادة تقييم التعبيرات على
مصادر البيانات المستخدَمة فيها. على سبيل المثال، لا تتم إعادة تقييم التعبير [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