例如,如果我有一个组件:
import React, { Component } from 'react';
import { Video } from 'expo';
let styles = require('../stylesheet.js');
export default class Player extends Component {
render(){
return(
<Video
ref={this._handleVideoRef}
source={require(//file)}
rate={1.0}
volume={1.0}
muted={false}
useNativeControls
resizeMode="cover"
shouldPlay
style={styles.player} />
)
}
}
我在文档(https://docs.expo.io/versions/latest/sdk/av.html)中看到使用"playbackstatus.didJustFinish“和onPlaybackStatusUpdate,但是他们的例子对我来说没有多大意义。谁能告诉我如何使用我的代码来确定视频是否已经结束?
发布于 2018-06-10 04:06:25
如果其他人来寻找答案,下面是OP和docs的组合(https://docs.expo.io/versions/latest/sdk/av.html):
import React, { Component } from 'react';
import { Video } from 'expo';
export default class Player extends Component {
_onPlaybackStatusUpdate = playbackStatus => {
if (playbackStatus.didJustFinish)
// The player has just finished playing and will stop.
};
render(){
return(
<Video
ref={this._handleVideoRef}
source={require(//file)}
onPlaybackStatusUpdate=
{(playbackStatus) => this._onPlaybackStatusUpdate(playbackStatus)}/>
resizeMode="cover"
style={styles.player}
);
}
}
发布于 2019-03-28 16:43:10
mauriii answer对我来说从来不起作用,因为当playbackStatus.didJustFinish变成true时,onPlaybackStatusUpdate没有被调用,但是在console.logging playbackstatus之后,我注意到还有另外两个字段durationMillis和positionMillis,所以当这两个值相等时,我们就知道视频是完整的
所以要更新这个答案
export default class Player extends Component {
_onPlaybackStatusUpdate = playbackStatus => {
if (playbackStatus.durationMillis === playbackStatus.positionMillis)
// The player has just finished playing and will stop.
};
render(){
return(
<Video
ref={this._handleVideoRef}
source={require(//file)}
onPlaybackStatusUpdate=
{(playbackStatus) => this._onPlaybackStatusUpdate(playbackStatus)}/>
resizeMode="cover"
style={styles.player}
);
}
}
https://stackoverflow.com/questions/45897748
复制相似问题