إنشاء تعبيرات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يستخدم 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
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Build expressions\n\nWFF uses an expression language to enable:\n\n- Transforming the appearance using `Transform` or `Gyro`\n- Conditional behavior through `Condition` statements\n- String formatting in `Template` elements\n\nThe expression language is a scripting language which contains your\ntypical operators and a range of functions that can be used.\n\nExpressions can use [data sources](/training/wearables/wff/common/attributes/source-type)---represented using square brackets---to\nlet you react to external inputs such as the current date and time, health\nand fitness metrics, or even the weather.\n\nWhen using expressions, the primary difference between `Transform` or `Template` and\n`Condition` usage, is that `Transform` and `Template` require the expression to result\nin a *value* (for example, the new position of the enclosing element) whereas\n`Condition` requires the expression to result in a *boolean*.\n\nFor example, a `Condition` might use: \n\n [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7\n\nThis evaluates to a boolean and determines whether it is a weekend or not,\nusing the `DAY_OF_WEEK` data source.\n\n[Functions](/training/wearables/wff/common/attributes/arithmetic-expression#functions) are also supported---for example, an expression for rotating a\nvalue up to 5 degrees in either direction---based on the `x-value` of the Wear OS\ndevice's accelerometer: \n\n (5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +\n (-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)\n\nThe `clamp()` function constrains a value within two bounds.\n\n### Expression re-evaluation\n\nThe frequency with which expressions are re-evaluated depends on the data\nsources used in them. For example, the \\[`DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] ==\n7` expression only re-evaluates when a new day starts. However, an expression\nthat uses the `[SECOND]` data source re-evaluates every second.\n\nRe-evaluation may result in scene recalculations and rerendering, based on the\nchange in the result of the expression. Therefore it is important to always use\ndata sources that re-evaluate as infrequently as possible. For example, to\ndetermine whether it is afternoon: \n\n // Bad - re-evaluates every second\n [SECONDS_IN_DAY] \u003e 43200\n\n // Good - limits re-evaluation frequency (1 = PM, 0 = AM)\n [AMPM_STATE] == 1\n\n### Configuration values in expressions\n\nIn addition to functions and data sources, configuration values can be used. For\nexample, if in the [UserConfigurations](/training/wearables/wff/user-configuration/user-configurations) a `BooleanConfiguration` named\n`showBackgroundInAfternoon` has been defined, this can be used in an expression: \n\n [CONFIGURATION.showBackgroundInAfternoon] == \"TRUE\" && [AMPM_STATE] == 1"]]