我对本机反应和开发一个非常简单的游戏还很陌生。该游戏通过使用底部标签导航由三个不同的标签组成。
这是我用于此游戏的不同选项卡。
屏幕一: https ://i.stack.imgur.com/R6TNm.png
屏幕 2: https ://i.stack.imgur.com/o21rh.png
屏幕 3: https ://i.stack.imgur.com/argoi.png
我的主要问题是:如果有人按下 Screen2 中的 Weapon1 按钮,它将调用在我的 Game.js 文件中定义的 WeaponOne() 函数。它应该将我的全局状态变量enemyBar 的当前状态更新为enemyBar =enemyBar - 0.1 并相应地更新屏幕1 和2 中的UI。同样,如果用户在屏幕3 中按下QuickFix,它将调用quickFix() 并更改状态变量从 hpBar 到 hpBar = hpBar + 0.1 并更新屏幕 1 和 3 的 UI。我将如何操作这些全局状态变量?
在此先感谢您的帮助。
全局状态参考:React Native 中的全局状态
全球.js
module.exports = {
    screen1: null
};
游戏.js
import React from 'react';
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
import * as Progress from 'react-native-progress';
import GLOBAL from '../../state/Global'
import {
    SafeAreaView,
    StyleSheet,
    ScrollView,
    View,
    Text,
    StatusBar,
    Button
} from 'react-native';
import {
    Header,
    LearnMoreLinks,
    Colors,
    DebugInstructions,
    ReloadInstructions,
} from 'react-native/Libraries/NewAppScreen';
import { createAppContainer } from 'react-navigation';
import { createMaterialBottomTabNavigator } from 'react-navigation-material-bottom-tabs';
//GLOBAL.screen1 = this;
GLOBAL.screen1 = {
    hpBar: 0.65,
    enemyBar: 0.87
}
class CaptainScreen extends React.Component {
    /* constructor() {
         super();
         this.state = {
             hpBar: 1,
             enemyBar: 1,
         }
     } */
    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.title}>Captain Screen</Text>
                <View style={styles.container2} >
                    <Progress.Bar progress={GLOBAL.screen1.hpBar} width={200} animated={true} borderColor={'black'} />
                    <Text style={styles.text}>Your HP: {GLOBAL.screen1.hpBar * 100}%</Text>
                    <Progress.Bar progress={GLOBAL.screen1.enemyBar} width={200} color={'red'} animated={true} borderColor={'black'} />
                    <Text style={styles.text}>Enemy HP: {GLOBAL.screen1.enemyBar * 100}%</Text>
                </View>
            </View>
        )
    }
}
class WeaponsScreen extends React.Component {
    weaponOne = () => {
        this.setState({ enemyBar: 1.0 - 0.1 })
    }
    render() {
        //GLOBAL.screen1 = this;
        return (
            <View style={styles.container}>
                <Text style={styles.title}>Weapons Screen</Text>
                <View style={styles.container2} >
                    <Progress.Bar progress={GLOBAL.screen1.enemyBar} width={200} color={'red'} animated={true} borderColor={'black'} />
                    <Text style={styles.text}>Enemy HP: {GLOBAL.screen1.enemyBar * 100}%</Text>
                    <Button title="Weapon 1" onPress={() => this.weaponOne()}> </Button>
                    <Button title="Weapon 2"> </Button>
                    <Button title="Weapon 3"> </Button>
                </View>
            </View>
        )
    }
}
class EngineersScreen extends React.Component {
    quickFix = () => {
        this.setState({ hpBar: hpBar + 0.1 })
    }
    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.title}>Engineer Screen</Text>
                <View style={styles.container2} >
                    <Progress.Bar progress={GLOBAL.screen1.hpBar} width={200} animated={true} borderColor={'black'} />
                    <Text style={styles.text}>Your HP: {GLOBAL.screen1.hpBar * 100}%</Text>
                    <Button title="Quick Fix" onPress={() => this.quickFix()}> </Button>
                    <Button title="Medium Fix"> </Button>
                    <Button title="Indepth Fix"> </Button>
                </View>
            </View>
        )
    }
}