-
-
Notifications
You must be signed in to change notification settings - Fork 39
/
App.js
76 lines (68 loc) 路 1.79 KB
/
App.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
/**
* @flow
*/
import React, { Component } from 'react'
import Phaser from 'phaser'
import { IonPhaser } from '@ion-phaser/react'
import logo from './assets/logo.png'
import './App.css'
class App extends Component {
state = {
unmounted: false,
initialize: false,
game: {
width: "100%",
height: "100%",
type: Phaser.AUTO,
scene: {
init: function() {
this.cameras.main.setBackgroundColor('#24252A')
},
create: function() {
this.helloWorld = this.add.text(
this.cameras.main.centerX,
this.cameras.main.centerY,
"Hello World", {
font: "40px Arial",
fill: "#ffffff"
}
);
this.helloWorld.setOrigin(0.5);
},
update: function() {
this.helloWorld.angle += 1;
}
}
}
}
initializeGame = () => {
this.setState({ initialize: true })
}
destroy = () => {
this.setState({ unmounted: true })
}
render() {
const { initialize, game, unmounted } = this.state
return (
<div className="App">
<header className="App-header">
{ !initialize &&
<React.Fragment>
<img src={logo} className="App-logo" alt="logo" />
<div onClick={this.initializeGame} className="flex">
<a href="#1" className="bttn">Initialize</a>
</div>
</React.Fragment>
}
{ !unmounted && <IonPhaser game={game} initialize={initialize} /> }
{ initialize && !unmounted &&
<div onClick={this.destroy} className="flex destroyButton">
<a href="#1" className="bttn">Destroy</a>
</div>
}
</header>
</div>
);
}
}
export default App;