在本地反应

时间:2017-07-19 15:28:47

标签: react-native background

我很抱歉,如果这是一个新手问题,但我真的很沮丧在我的反应原生应用程序中设置背景视频。

从反应原生视频library的文档开始。 这是不好的文档还是我很难理解如何设置它?

  1. 我做了npm install --save react-native-video。
  2. 我运行了react-native链接
  3. 我检查了其他java文件,他们已经有了他注意到的内容。 他对Windows的引用,我不知道他说的是什么或哪个用户案例应该做什么。

    代码:

    在我的登录组件中,我想要一个背景视频。 到目前为止,这是我的代码:

    import React, { Component } from 'react';
    import { Text, View, TouchableOpacity } from 'react-native';
    import Video from 'react-native-video';
    
    class LoginComponent extends Component {
    
      render() {
        const {
          containerStyle,
          introTextContainerStyle,
          introTextStyle,
          introTextHighlightStyle,
          loginButtonsContainerStyle,
          backgroundVideo
        } = styles;
    
        return (
          <View style={ containerStyle }>
            <Video source={{uri: "../assets/background.mp4"}}
               ref={(ref) => {
                 this.player = ref
               }}
               rate={1.0}
               volume={1.0}
               muted={false}
               resizeMode="cover"
               repeat={true}
               style={backgroundVideo}
            />
            <View style={ introTextContainerStyle }>
              <Text style={ introTextStyle }>
                Tus problemas
              </Text>
              <Text style={ introTextHighlightStyle }>
                Lisdos's
              </Text>
              <Text style={ introTextStyle }>
                en un abrir y cerrar de ojos
              </Text>
            </View>
    
            <View style={ loginButtonsContainerStyle }>
              <TouchableOpacity>
                <Text>Log In with Facebook</Text>
              </TouchableOpacity>
            </View>
    
          </View>
        );
      }
    }
    
    const styles = {
      containerStyle: {
        height: '100%',
        padding: 20
      },
    
      introTextContainerStyle: {
        borderColor: 'black',
        borderWidth: 1,
        justifyContent: 'center',
        alignItems: 'center',
        height: '50%'
      },
    
      introTextStyle: {
        fontSize: 24,
        textAlign: 'center',
        lineHeight: 40
      },
    
      introTextHighlightStyle: {
        fontSize: 24,
        textAlign: 'center',
        fontWeight: '700',
        color:'gold'
      },
    
      loginButtonsContainerStyle: {
        borderColor: 'blue',
        borderWidth: 1,
        height: '50%',
        justifyContent: 'center',
        alignItems: 'center'
      },
    
      backgroundVideo: {
        position: 'absolute',
        top: 0,
        left: 0,
        bottom: 0,
        right: 0,
      }
    }
    
    export default LoginComponent;
    

    没有标签,组件渲染得很好,但我一直在看臭名昭着的红色屏幕,说明:

    Cannot read property 'Constants' of undefined
    

    我在设置或标签中遗漏了什么?我的错了吗?

    感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题在于您的source标记。由于您使用RN Asset系统加载文件,因此您需要直接导入文件而不是使用uri

我通常这样做(我建议你这样做):

import background from '../assets/background.mp4';
...
   <Video source={background}
    ...
   />

或者您可以直接在源代码中导入文件:

<Video source={require('../assets/background.mp4')}
...
/>