我正在处理电影。move.jump() 函数在影片反转播放期间不起作用。我有反向代码:(reverse
是全局布尔变量)
float playSpeed = 1.0;
//After click reverse button
if(reverse == false){
playSpeed = playSpeed * -1;
movie.speed(playSpeed);
reverse = true;
}
else{
playSpeed = playSpeed * -1;
movie.speed(playSpeed);
reverse = false;
}
在reverse == true
期间,我单击某个按钮,并跳转到某个时间,例如 5.0,代码如下所示:
//after click button
if(reverse == true){
movie.jump(5.0);
}
而且这个跳转功能不起作用。它不会跳转到 5.0 秒的电影帧。并显示一些错误:
ast_segment_set_seek: assertion 'start <= stop' failed
谁能告诉我为什么跳转功能不起作用以及如何修复它?谢谢。
编辑:更合理的答案:可能是跳跃计算了相对于帧速率的位置,该位置在向后播放时变为负数,然后在开始之前结束?在这种情况下,我的解决方法应该有效。
不确定您正在使用什么类,但您不能做一个解决方法吗?应该如此之快,以至于用户不会注意到:
if (reverse) {
movie.speed(1f);
// jump();
movie.speed(playSpeed);
} else {
// jump();
}
顺便说一句,反向可以写成(如果需要,没有):
reverse = !reverse;
playSpeed = -playSpeed;
movie.speed(playSpeed);
答案,我自己想办法。如果影片播放速度小于 0,则星形将小于停止。所以,如果播放速度小于0,正好*-1,让大于0,比跳跃,比*-1,让速度小于0。
if(reverse == true){
m.speed(playSpeed*-1);
m.jump(5.0);
m.speed(playSpeed*-1);
}