SubspaceModifier דומה ל-Compose modifier עבור composables ב-Subspace. SubspaceModifier מאפשרת לכם לשנות את הקומפוזיציות במרחב תלת-ממדי, ולעזור לכם למקם, לסובב ולהוסיף התנהגויות לצמתי פריסה תלת-ממדיים.
פריסה
כברירת מחדל, Subspace מוגבל על ידי המרחב המומלץ לצפייה באפליקציה. המגבלות האלה משמשות למדידת הפריסה של רכיבי המרחב המשני, בדומה למגבלות בפריסות דו-ממדיות של Compose.
מילוי גבולות
המשנים fillMaxSize, fillMaxWidth, fillMaxHeight ו-fillMaxDepth גורמים לתוכן למלא (באופן חלקי) את הגבולות של רכיב האב שלו.
שימוש במאפייני מילוי עוזר לפריסת התוכן באפליקציה באופן שלא תלוי במאפייני התצוגה של מכשיר ה-XR.
הגדרת הגודל בפועל והגודל הנדרש
המשנים size, width, height ו-depth
מגדירים את הגודל המועדף של התוכן. כדי להצהיר על הגודל המדויק של התוכן, משתמשים בתגי requiredSize, requiredWidth, requiredHeight ו-requiredDepth. צריך לציין את היחידות האלה במאפיין dp. כדי להמיר ממטרים ל-dp, משתמשים ב-Meter.toDp().
מיקום הרכיבים הקומפוזביליים
offset
המשנה offset מעביר את הרכיב הניתן להרכבה במרחב תלת-ממדי לאורך הצירים x, y ו-z. צריך לציין את היחידות האלה ב-dp. כדי להמיר מטרים ל-dp, צריך להשתמש ב-Meter.toDp().
rotate
המשנה rotate מסובב את הרכיב הניתן להרכבה שצוין במרחב. אפשר לציין את כיוון הסיבוב ואת זווית הסיבוב בכמה דרכים:
- השימוש ב-pitch, yaw ו-roll, שמציינים את הסיבוב סביב הצירים
x,yו-zבהתאמה, - שימוש ב-
axisAngle, שהואVector3שמייצג את ציר הסיבוב, ואת מספר המעלות שצריך לסובב סביבו, - שימוש ב-
Quaternionשמייצג את הסבב.
rotateToLookAtUser
המשנה rotateToLookAtUser מסובב את התוכן באופן רציף כך שהוא תמיד פונה אל המשתמש. אפשר גם להשתמש במאפיין הזה כדי ליצור אפקט של שלט חוצות, שבו התוכן מסתובב כדי להיות מול המשתמשים בציר Y, אבל עדיין נשאר זקוף ומיושר עם כוח המשיכה. כדי לעשות את זה, משלבים את הערך לשינוי ההנחה rotateToLookAtUser עם הערך לשינוי ההנחה gravityAligned.
הזזה ושינוי גודל באמצעות רכיבים קומפוזביליים
המשתמשים יכולים לשנות ישירות את המיקום והגודל של אובייקטים במרחב תלת-ממדי. אפשר להוסיף את התוספים האלה לרכיבים בודדים (כמו SpatialPanel), לתת-מרחבים ולרכיבי פריסה מרחבית (כמו SpatialRow או SpatialColumn).
הזזת רכיבים
אמצעי שינוי מיקום מאפשרים למשתמשים לתפוס רכיבים של מרחב משנה ולשנות את המיקום שלהם.
transformingMovable: משתמשים בשינוי הזה לתנועה רגילה. המשנה הזה מגדיר את האלמנט כאינטראקטיבי וככזה שהמשתמש יכול להזיז. המערכת מחשבת ומחיל באופן אוטומטי את התנוחה והקנה מידה החדשים על סמך הקלט של המשתמש.
movable: משתמשים במחרוזת הזו כדי להגדיר התנהגות תנועה מותאמת אישית. המערכת מספקת את האפשרות להזזה, אבל אתם צריכים להשתמש באירועonMoveהנדרש ולהחיל את התוצאה. האפשרות הזו שימושית להגבלת התנועה או ליצירת תנועה מותאמת אישית באפליקציה.
שינוי הגודל של רכיבים
אמצעי שינוי גודל מאפשרים למשתמשים לתפוס ולשנות את הגודל של רכיבי תת-מרחב.
transformingResizable: משתמשים בשינוי הזה כדי לשנות את הגודל של החלון באופן אוטומטי. המשנה הזה מטפל אוטומטית בתנועת שינוי הגודל ומחיל את המידות החדשות שהמשתמש מציין.
resizable: משתמשים במחרוזת הזו לשינוי גודל מותאם אישית. המערכת מספקת את האפשרות לשנות את הגודל, אבל אתם צריכים להשתמש באירועonResizeולהחיל את התוצאה. העיבוד הזה שימושי בתרחישים מורכבים, כמו שמירה על יחס גובה-רוחב ספציפי או התאמה מחדש של הפריסה הכוללת של רכיבים אחרים אחרי שינוי גודל.
שינוי המראה של הרכיבים הקומפוזביליים
alpha
המשנה alpha מגדיר את האטימות של הרכיב ושל רכיבי הצאצא שלו, כאשר 0f מייצג שקיפות מלאה ו-1.0f מייצג אטימות מלאה.
scale
המשנה scale משנה את קנה המידה של התוכן של הקומפוזיציה לאורך הצירים האופקי, האנכי והעומק.
בדיקות ונגישות
semantics
העיבוד semantics מוסיף סמנטיקה לצומת הפריסה, לשימוש בבדיקות ובנגישות. מידע נוסף זמין במאמרים Semantics in Jetpack Compose ו-SemanticsModifier.
testTag
המשנה testTag הוא קיצור של SemanticsPropertyReceiver.testTag, שמאפשר למסגרות בדיקה למצוא את הרכיב בבדיקות.