-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
88 lines (79 loc) · 2.13 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import React, { Fragment } from 'react';
import {
AppRegistry,
asset,
StyleSheet,
Environment,
Prefetch,
View,
Image,
NativeModules,
VrButton
} from 'react-360';
import Flag from './components/Flag';
import Earth from './components/Earth';
const { TitleChanger } = NativeModules;
const PLACES = [
{
name: 'Space',
flag: 'flag_nasa.png',
panorama: 'stars.png'
},
{
name: 'Spain',
flag: 'flag_spain.png',
panorama: 'spain.jpg'
},
{
name: 'Italy',
flag: 'flag_italy.png',
panorama: 'italy.jpg'
},
{
name: 'Ukraine',
flag: 'flag_ukraine.jpg',
panorama: 'ukraine.jpg'
}
];
export default class travelVR extends React.Component {
state = {
activeFlag: ''
};
changeBackground(panorama, name) {
Environment.setBackgroundImage(asset(panorama));
TitleChanger.changeTitle(name);
}
renderFlags() {
return PLACES.map(({ flag, panorama, name }) => {
return (
<Fragment key={flag}>
<Prefetch source={asset(panorama)} />
<VrButton
onEnter={() => this.setState({ activeFlag: flag })}
onExit={() => this.setState({ activeFlag: '' })}
onClick={() => this.changeBackground(panorama, name)}
>
<Flag image={flag} activeFlag={this.state.activeFlag} />
</VrButton>
</Fragment>
);
});
}
render() {
const { flagContainer } = styles;
return <View style={flagContainer}>{this.renderFlags()}</View>;
}
}
const styles = StyleSheet.create({
flagContainer: {
height: 600,
width: 4680,
backgroundColor: 'rgba(255, 255, 255, 0.3)',
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center'
}
});
AppRegistry.registerComponent('travelVR', () => travelVR);
AppRegistry.registerComponent('Flag', () => Flag);
AppRegistry.registerComponent('Earth', () => Earth);