-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
88 lines (79 loc) · 1.86 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 HelloFbDevC 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('HelloFbDevC', () => HelloFbDevC)
AppRegistry.registerComponent('Flag', () => Flag)
AppRegistry.registerComponent('Earth', () => Earth)