我正在使用react-viro开发一个AR应用程序。在主app.js中,我有以下代码:
var arScenes = {
'Campidoglio_AR': require('./js/Campidoglio_AR/Campidoglio_AR'),
'Piazza_Bra_AR': require('./js/Piazza_Bra_AR/Piazza_Bra_AR'),
}
function HomeScreen({ navigation }) {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Questa è la schermata iniziale</Text>
<Text>Premi il bottone sottostante per visitare Piazza Bra</Text>
<Button
title="Piazza Bra"
onPress={() => navigation.navigate('Piazza Bra')}
/>
);
}
function Piazza_Bra_AR({ navigation }) {
return (
<ViroARSceneNavigator
initialScene={{
scene: arScenes['Piazza_Bra_AR'],
}} />
);
}
const Stack = createStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen options={{headerShown: false}} name="Piazza Bra" component={Piazza_Bra_AR} />
</Stack.Navigator>
</NavigationContainer>
);
}
export default App;
因此,当我点击主屏幕中的按钮时,我导航到Piazza_Bra_AR. js,如下所示:
export default class Piazza_Bra_AR_Scene extends React.Component {
constructor() {
super();
this.state = {
showSceneItems : false,
}
this._getInfoControls = this._getInfoControls.bind(this);
this._onBackClick = this._onBackClick.bind(this);
this._onBackgroundPhotoLoadEnd = this._onBackgroundPhotoLoadEnd.bind(this);
}
render() {
return (
<ViroARScene style={styles.container}>
<ViroSkyBox source={{
nx:require('./res/Skybox/negx.png'),
px:require('./res/Skybox/posx.png'),
ny:require('./res/Skybox/negy.png'),
py:require('./res/Skybox/posy.png'),
nz:require('./res/Skybox/negz.png'),
pz:require('./res/Skybox/posz.png')}}
onLoadEnd={this._onBackgroundPhotoLoadEnd}/>
<LoadingSpinner visible={!this.state.showSceneItems} position={[0, 0, -5]}/>
<ViroImage source={nastro_azzurro} onClick={() => navigation.navigate('Home')} /> //here i want to navigate
{this._getInfoControls()}
</ViroARScene>
);
}
_getInfoControls() {
return (
<ViroNode
opacity={0}
animation={{
name : "fadeIn",
run : this.state.showSceneItems,
loop : false,
}} >
<InfoElement url={arena_url} tipo_struttura={monumento} content={arena} event_content={event_arena} contentCardScale={[1,1,1]} position={polarToCartesian([-5, 220, -15])}/>
<InfoElement url={initimissimi_url} tipo_struttura={negozio} content={intimissimi} event_content={event_intimissimi} contentCardScale={[1,1,1]} position={polarToCartesian([-8, 184, -5])}/>
<InfoElement url={lv_url} tipo_struttura={negozio} content={lv} contentCardScale={[1,1,1]} event_content={event_lv} position={polarToCartesian([-7, 170, -5])}/>
<InfoElement url={cinema_rivoli_url} tipo_struttura={tempo_libero} content={cinema_rivoli} event_content={event_cinema_rivoli} contentCardScale={[1,1,1]} position={polarToCartesian([-6, 62, -5])}/>
<InfoElement url={piazza_url} tipo_struttura={tempo_libero} content={piazza} contentCardScale={[1,1,1]} event_content={event_piazza} position={polarToCartesian([-6, -23, -5])}/>
<InfoElement url={comune_url} tipo_struttura={monumento} content={comune} contentCardScale={[1.5,1.5,1.5]} event_content={event_comune} position={polarToCartesian([-7, -65, -10])}/>
</ViroNode>
);
}
_onBackgroundPhotoLoadEnd() {
this.setState({
showSceneItems:true
});
}
}
module.exports = Piazza_Bra_AR_Scene;
我想知道我怎么能通过在ViroImage上使用OnClick回到我的主屏幕。关于Github问题(https://github.com/viromedia/viro/issues/877)据说你只是做你通常会在一个普通的React原生应用程序,但我不能得到它。正如你可以想象我的话,我不是一个开发人员在所有,碰巧我的一个朋友正在写他的论文(他是一个绘图员),他请我帮他一把;也就是说,任何帮助都将不胜感激,如果需要的话,我会提供进一步的信息。
2条答案
按热度按时间xuo3flqw1#
这是一个愚蠢的问题...只是编辑它像这样
然后在Piazza_Bra_AR.js中,在
render(){
下添加了这一行:这样称呼它:
tnkciper2#
我有一个导航问题。当我导航到渲染ViroarSceneNavigator的组件时,应用程序崩溃并关闭!
App.js
SceneAR.js
如果你能帮我解决这个问题,我将不胜感激。