Table of Contents

Kontrol alur AR session

Dokumen ini akan memperkenalkan kontrol alur AR session, termasuk cara membuat, memulai, menghentikan, dan menghancurkan AR session.

Sebelum memulai

Membuat

Gunakan appId pustaka pelokasian awan dalam konfigurasi, serverAddress layanan awan, apiKey dan apiSecret untuk membuat APIKeyAccessData.

Kemudian gunakan APIKeyAccessData yang dibuat untuk membuat MegaTrackerConfigs.

Gunakan MegaTrackerConfigs dan licenseKey dalam konfigurasi untuk membuat SessionConfigs.

Akhirnya, gunakan metode createSession(sessionConfigs) dari EasyARMegaComponent yang terpasang di scene xr-frame untuk membuat session.

createSession() {
    // Dapatkan megaComponent yang terpasang di scene
    const megaElement = scene.getElementById('easyar-mega');
    const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
    // Konfigurasi otentikasi 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 mendapatkan megaComponent dari scene dan kemudian menggunakan konfigurasi untuk membuat instance session.

Hati-Hati

Batasan instance tunggal: hanya satu instance Session yang diizinkan dalam satu scene. Sebelum membuat Session baru, pastikan untuk memanggil closeSession() untuk menghancurkan instance lama, jika tidak akan menyebabkan kegagalan pembuatan.

Memulai

Biasanya gunakan metode start(options) dari EasyARSession dalam callback kesiapan sistem AR xr-frame untuk memulai session.

Peringatan

MegaTracker bergantung pada data yang disediakan oleh pelacak AR planar, dan tidak dapat bekerja sebelum pelacak planar diinisialisasi.

Di WXML, gunakan bind:ready="handleReady" untuk mendaftarkan acara kesiapan sistem AR:

<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">

Dalam fungsi callback handleReady komponen xr-frame, gunakan metode start(options) dari EasyARSession untuk memulai session.

handleReady: function(event) {
    try {
        //Mulai Session, default mencoba 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 di scene xr-frame untuk menghancurkan session.

Disarankan untuk memanggilnya dalam siklus hidup detached komponen xr-frame untuk memastikan penghancuran saat meninggalkan halaman (yaitu saat instance komponen dihapus dari pohon node halaman).

lifetimes: {
    detached: function() {
        const megaElement = scene.getElementById('easyar-mega');
        const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
        megaComponent.closeSession();
    }
}

Pergantian latar depan dan latar belakang

Saat halaman pindah ke latar belakang, gunakan metode pause() dari EasyARSession untuk menjeda session. Saat halaman kembali ke latar depan, gunakan metode resume() dari EasyARSession untuk melanjutkan session.

/** Pemanggilan di 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() dan resumeSession().

Di halaman mini program, panggil pauseSession() di onHide saat mini program berpindah dari latar depan ke latar belakang untuk menjeda session.

Di onShow saat mini program berpindah dari latar belakang ke latar depan, panggil resumeSession() untuk melanjutkan session.