Expo.GLView не работает на iOS при изменении файла app.js - PullRequest
0 голосов
/ 27 января 2019

В настоящее время я работаю над веб-AR с экспо с моего устройства iOS.Во время начального процесса Expo.GLView, кажется, не работает на моей iOS, когда я изменил свой app.js.

Кто-нибудь может помочь?

import React from 'react';
import Expo from 'expo';
import { StyleSheet, Text, View } from 'react-native';
import * as THREE from 'three';
import ExpoTHREE from 'expo-three';

export default class App extends React.Component {
  render() {
    return (
        <Expo.GLView
        style={{flex: 1}}
        onContextCreate={this._onGLContextCreate}
        />

    );
  }

  _onGLContextCreate = async (gl) => {
    const scene = new THREE.Scene();
    const camera = new THREE.PerspectiveCamera(75, gl.drawingBufferWidth / gl.drawingBufferHeight, 0.1, 1000);
    const renderer = ExpoTHREE.createRenderer({ gl });
    renderer.setSize(gl.drawingBufferWidth, gl.drawingBufferHeight);

    const geometry = new THREE.BoxGeometry(1, 1, 1);
    const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
    const cube = new THREE.Mesh(geometry, material);
    scene.add(cube);
    camera.position.z = 5;

    const animate = () => {
      requestAnimationFrame(animate);
      renderer.render(scene, camera);
      gl.endFrameEXP();
    }
    animate();
  }
}

Это ошибка, с которой я сталкиваюсь.Я четко следовал инструкциям.Что происходит?

[01:45:27] TypeError: undefined is not an object (evaluating '_expo.default.GLView')

1 Ответ

0 голосов
/ 25 мая 2019

Похоже, что незначительная проблема с синтаксисом при импорте.Экспо должно иметь экспорт по умолчанию отдельно от его различных компонентов или что-то в этом роде.Ниже работает для меня:

import { GLView } from 'expo'

В настоящее время я использую expo-three и использую пакет expo-graphics для моего элемента GLView, я считаю, что это немного удобнее, так как он принимает дополнительные реквизиты для "onResize""и" onRender ", поэтому вам не нужно обрабатывать их отдельно.

npm i --save expo-graphics

, а затем вместо импорта из экспозиции импортируйте ее из графики экспозиции (компонент просто называется" просмотр "в экспозицииграфику, поэтому вы можете импортировать ее с собственным именем, если вы работаете с другими представлениями в том же компоненте)

import { View as GraphicsView } from 'expo-graphics'

Тогда это замена для стандартного GLView

  render() {
    return (
        <GraphicsView
        style={{flex: 1}}
        onContextCreate={this._onGLContextCreate}
        />
    );
  }

Затем вы также можете добавить функцию рендеринга цикла и изменить размер функции через соответствующие реквизиты

  render() {
    return (
        <GraphicsView
        style={{flex: 1}}
        onContextCreate={this._onGLContextCreate}
        onResize={this._onResize}
        onRender={this._onRender}
        />
    );
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...