مدارگردها

دستگاه‌های XR واجدشرایط
این راهنمایی به شما کمک می‌کند برای این نوع دستگاه‌های واقعیت گسترده تجربه بسازید.
هدست‌های واقعیت گسترده
عینک واقعیت گسترده سیمی

Orbiter یک مؤلفه فضایی است که می‌توانید آن را به یک پانل فضایی یا مؤلفه چیدمان فضایی مربوطه مانند SpatialColumn، SpatialRow، یا SpatialBox متصل کنید. مدارگرد معمولاً حاوی موارد کنش بافتاری و پیمایش مربوط به موجودیتی است که به آن متصل شده است. برای مثال، اگر پانل فضایی برای نمایش محتوای ویدیویی ایجاد کرده‌اید، می‌توانید کنترل‌های بازپخش ویدیو را در داخل یک مدارگرد اضافه کنید.

شکل ۱.: نمونه‌ای از مدارگرد.

ایجاد مدارگرد

همان‌طور که در مثال زیر نشان داده شده است، یک orbiter را در چیدمان دوبعدی در SpatialPanel فراخوانی کنید تا کنترل‌های کاربر مانند پیمایش را دربرگیرد. با این کار، آن‌ها از چیدمان دوبعدی شما استخراج می‌شوند و براساس پیکربندی شما به پانل فضایی متصل می‌شوند.

Subspace {
    SpatialPanel(
        SubspaceModifier
            .height(824.dp)
            .width(1400.dp)
            .resizable()
            .movable(),
    ) {
        SpatialPanelContent()
        OrbiterExample()
    }
}

@Composable
fun OrbiterExample() {
    Orbiter(
        position = OrbiterPosition.BottomCenter(
            verticalEdgeAlignment = OrbiterPosition.EdgeAlignment.Outside,
            offset = DpVolumeOffset(y = 96.dp)
        ),
    ) {
        Surface(Modifier.clip(CircleShape)) {
            Row(
                Modifier
                    .background(color = Color.Black)
                    .height(100.dp)
                    .width(600.dp),
                horizontalArrangement = Arrangement.Center,
                verticalAlignment = Alignment.CenterVertically
            ) {
                Text(
                    text = "Orbiter",
                    color = Color.White,
                    fontSize = 50.sp
                )
            }
        }
    }
}

نکات کلیدی درباره کد

  • چون مدارگردها مؤلفه‌های رابط کاربری فضایی هستند، می‌توان از کد آن‌ها در چیدمان‌های دوبعدی یا سه‌بعدی استفاده مجدد کرد. در چیدمان دوبعدی، برنامه‌تان فقط محتوای داخل مدارگرد را ارائه می‌کند و خود مدارگرد را نادیده می‌گیرد.
  • برای اطلاعات بیشتر درباره نحوه استفاده و طراحی مدارگردها، راهنمای طراحی ما را بررسی کنید.

لنگر کردن مدارگردها به پانل‌ها و چیدمان‌های فضایی

می‌توانید یک مدارگرد را به SpatialPanel و مؤلفه‌های چیدمان فضایی اعلام‌شده در Compose متصل کنید. این شامل اعلام یک مدارگرد در چیدمان فضایی عناصر میانای کاربر مانند SpatialRow، SpatialColumn، یا SpatialBox است. مدارگرد به والدینی که نزدیک‌ترین به جایی است که آن را اعلام کرده‌اید، متصل می‌شود.

رفتار orbiter براساس جایی که آن را اعلام می‌کنید تعیین می‌شود:

  • در چیدمان دوبعدی که در SpatialPanel قرار دارد (همان‌طور که در تکه‌کد قبلی نشان داده شده است)، orbiter به آن SpatialPanel متصل می‌شود.
  • در Subspace، مدارگرد به نزدیک‌ترین نهاد والد متصل می‌شود، که همان چیدمان فضایی است که مدارگرد در آن اعلام شده است.

مثال زیر نشان می‌دهد که چگونه می‌توان یک مدارگرد را به یک ردیف فضایی متصل کرد:

Subspace {
    SpatialRow {
        Orbiter(
            position = OrbiterPosition.TopCenter(
                verticalEdgeAlignment = OrbiterPosition.EdgeAlignment.Outside,
                offset = DpVolumeOffset(y = 8.dp)
            ),
            shape = SpatialRoundedCornerShape(size = CornerSize(50))
        ) {
            Text(
                "Hello World!",
                style = MaterialTheme.typography.titleMedium,
                modifier = Modifier
                    .background(Color.White)
                    .padding(16.dp)
            )
        }
        SpatialPanel(
            SubspaceModifier
                .height(824.dp)
                .width(1400.dp)
        ) {
            Box(
                modifier = Modifier
                    .background(Color.Red)
            )
        }
        SpatialPanel(
            SubspaceModifier
                .height(824.dp)
                .width(1400.dp)
        ) {
            Box(
                modifier = Modifier
                    .background(Color.Blue)
            )
        }
    }
}

نکات کلیدی درباره کد

  • وقتی یک مدارگرد را خارج از چیدمان دوبعدی اعلام می‌کنید، مدارگرد به نزدیک‌ترین موجودیت والد خود متصل می‌شود. دراین‌صورت، مدارگرد به بالای SpatialRow که در آن اعلام شده است متصل می‌شود.
  • چیدمان‌های فضایی مانند SpatialRow، SpatialColumn، SpatialBox همگی دارای نهادهای بدون محتوای مرتبط با خود هستند. بنابراین، مدارگردی که در چیدمان فضایی اعلام شده است، به آن چیدمان متصل می‌شود.