Kontrol alur AR Session
Dokumen ini memperkenalkan kontrol alur AR Session, termasuk cara membuat, memulai, menghentikan, dan menghancurkan AR Session.
Sebelum memulai
- Pahami konsep dan alur AR Session
Membuat
Gunakan cloud localization library appId, cloud service serverAddress, cloud service apiKey, dan apiSecret dalam konfigurasi untuk membuat APIKeyAccessData.
Kemudian gunakan APIKeyAccessData yang dibuat untuk membuat MegaTrackerConfigs.
Lalu gunakan MegaTrackerConfigs dan licenseKey dalam konfigurasi untuk membuat SessionConfigs.
Terakhir, gunakan metode createSession(sessionConfigs) dari EasyARMegaComponent yang terpasang pada scene xr-frame untuk membuat session.
createSession() {
// ambil megaComponent yang terpasang di scene
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
// konfigurasi autentikasi layanan cloud MegaTracker
const apiKeyAccess = new mega.APIKeyAccessData(this.data.appId, this.data.serverAddress, this.data.apiKey, this.data.apiSecret);
const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
access: apiKeyAccess
}
// konfigurasi Session
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
}
// buat instance
session = megaComponent.createSession(sessionConfigs);
}
Kode ini menunjukkan cara memperoleh
megaComponentdari scene lalu menggunakan konfigurasi untuk membuat instance session.
Hati-Hati
Batasan instance tunggal: hanya satu instance Session yang boleh ada dalam satu scene. Sebelum membuat Session baru, pastikan closeSession() sudah dipanggil untuk menghancurkan instance lama, jika tidak pembuatan akan gagal.
Memulai
Biasanya, gunakan metode start(options) dari EasyARSession dalam callback saat sistem AR xr-frame sudah siap untuk memulai session.
Peringatan
MegaTracker bergantung pada data yang disediakan oleh planar AR tracker, dan tidak dapat bekerja sebelum planar tracker selesai diinisialisasi.
Di WXML, gunakan bind:ready="handleReady" untuk mendaftarkan event saat sistem AR siap:
<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">
Dalam callback handleReady pada komponen xr-frame, gunakan metode start(options) dari EasyARSession untuk memulai session.
handleReady: function(event) {
try {
//mulai Session; secara default coba ulang 5 kali jika gagal
await session.start();
} catch (err) {
console.error(`EasyAR Session initialization failed: ${err.message}`);
return;
}
}
Menghentikan dan menghancurkan
Gunakan metode closeSession() dari EasyARMegaComponent yang terpasang pada scene xr-frame untuk menghancurkan session.
Disarankan untuk memanggilnya dalam lifecycle detached komponen xr-frame agar session dihancurkan saat meninggalkan halaman, yaitu saat instance komponen dihapus dari tree node halaman.
lifetimes: {
detached: function() {
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
megaComponent.closeSession();
}
}
Beralih antara foreground dan background
Saat halaman masuk ke background, gunakan metode pause() dari EasyARSession untuk menjeda session. Saat halaman kembali ke foreground, gunakan metode resume() dari EasyARSession untuk melanjutkan session.
/** panggilan halaman Mini Program*/
onHide() {
if (this.ar) {
this.ar.pauseSession();
}
},
onShow() {
if (this.ar) {
this.ar.resumeSession();
}
}
/** fungsi dalam komponen xr-frame*/
pauseSession(): void {
if (!session) { console.error("EasyAR Session is not ready"); return;}
session.pause();
},
resumeSession(): void {
if (!session) { console.error("EasyAR Session is not ready"); return;}
session.resume();
}
Dalam kode ini, komponen xr-frame mengekspos dua fungsi
pauseSession()danresumeSession().Di halaman Mini Program, panggil
pauseSession()pada onHide, yaitu saat Mini Program berpindah dari foreground ke background, untuk menjeda session.Panggil
resumeSession()pada onShow, yaitu saat Mini Program kembali dari background ke foreground, untuk melanjutkan session.