【发布时间】:2022-04-08 05:06:29
【问题描述】:
我正在制作一个像 tiktok / instagram reel 这样的视频应用程序,我有一个如下的平面列表
我的所有视频都会自动播放,我已将其设置为在渲染时暂停(目前),我想在屏幕上看到视频并暂停其他视频时播放视频,但它没有工作我似乎无法在网上看到任何关于如何暂停其他视频或可能只渲染一个视频直到我滚动但无论我做什么所有视频都设置为 true 的内容。
如何让可见的视频播放,然后在用户滚动时暂停,然后播放其他可见视频?
我已经在这工作了 2 天,我的脑袋很炸,任何帮助将不胜感激:(
PostScreen.js
const [state, setState] = useState({
isVisible: false,
})
const videoData [
{
id: 1,
video: videourl
},
{
id: 2,
video: videourl
},
];
const _onViewableItemsChanged = useCallback(({ viewableItems }) => {
if(viewableItems[0]){
if(viewableItems[0].isViewable){
setState({...state, isVisible: true})
}
}
}, []);
const _viewabilityConfig = {
itemVisiblePercentThreshold: 50
}
<FlatList
data={videosData}
decelerationRate={'fast'}
showsVerticalScrollIndicator={false}
snapToInterval={Dimensions.get('window').height}
snapToAlignment={"start"}
initialScrollIndex={0}
disableIntervalMomentum
onViewableItemsChanged={_onViewableItemsChanged}
viewabilityConfig={_viewabilityConfig}
renderItem={ ({ item }) => (
<View>
<VideoPlayerComponent data={item} />
</View>
)}
/>
视频播放器组件
const [data] = useState(props.data)
const [paused, setPaused] = useState(true);
return(
<View>
<TouchableWithoutFeedback
onPress={() => setPaused(!paused)}
>
<View>
<Video
style={styles.fullScreen}
source={data.video}
resizeMode="cover"
paused={paused}
repeat
/>
{
paused ? (
<View style={styles.pausedIcon}>
<Icon name="play" type="ionicon" color="white" size={68} />
</View>
): null
}
</View>
</TouchableWithoutFeedback>
</View>
)
【问题讨论】:
标签: react-native