إنشاء تعبيرات

يستخدم 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