【发布时间】:2023-03-15 23:59:02
【问题描述】:
我一直在使用 YouTube iframe API,并使用 Flash CC HTML5 画布为 YouTube 播放器创建了一组基本的播放器控件。这些控件包括一个播放/暂停按钮、一个带有可拖动播放头和缓冲视觉指示的视频栏,以及一个音量控制器。在我桌面上的 Chrome 中一切正常。
但是,当我在 iPad 上测试播放器时,除了音量控制器之外,一切都正常。滑块移动得非常好,但不会导致音量发生变化。
我在网上环顾四周,并没有找到任何特定于 iPad 上音量无法控制的问题,而且由于 iPad 上没有开发控制台,我无法真正在里面四处寻找到底发生了什么.
如果有人对此问题有任何经验或对可能发生的情况有任何一般见解,将不胜感激。
这是一个 JSFiddle https://jsfiddle.net/y3dL9jsw/1/,其中包含项目。
这里是音量控制相关的代码:
//Volume Control
mainStage.mcplayer.mcvolumecontrol.volIcon.on("mousedown", function(evt){
if(mainStage.mcplayer.mcvolumecontrol.currentFrame == 0){
mainStage.mcplayer.mcvolumecontrol.gotoAndStop(1);
}else{
mainStage.mcplayer.mcvolumecontrol.gotoAndStop(0);
}
});
//Mouse Down Pick-up Video Playhead, Change Cursor to pointy finger
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("mousedown", function(evt){
isVolGrabbed = true;
document.body.style.cursor='pointer';
});
//Mousemove Move Voulme Playhead
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("pressmove", function(evt){
if(isVolGrabbed == true){
evt.nativeEvent.preventDefault();//stop browser default actions from happening (Selecting text, etc)
this.x = evt.stageX - mainStage.mcplayer.x - mainStage.mcplayer.mcvolumecontrol.x;//make playhead follow mouse
//constrain playhead x coords to the videobar
if(this.x < 0 + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x){this.x = mainStage.mcplayer.mcvolumecontrol.mcvolslider.x;}
if(this.x > volbarLength + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x){this.x = volbarLength + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x;}
//if the mouse gets too far from the bar along the y axis, drop the head change back the cursor
//this is important because the Youtube player breaks the mouse events if you mouse over it
if((evt.stageY - mainStage.mcplayer.y) < (-1 * playheadConstrain) || (evt.stageY - mainStage.mcplayer.y) > playheadConstrain){
document.body.style.cursor='auto';
isVolGrabbed = false;
}
}
});
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("pressup", function(evt){
document.body.style.cursor='auto';
volFraction = (mainStage.mcplayer.mcvolumecontrol.mcvolhead.x - mainStage.mcplayer.mcvolumecontrol.mcvolslider.x) / (volbarLength);
playeryt.setVolume(volFraction * 100);
console.log("vol Drop" + volFraction);
isVolGrabbed = false;
});
【问题讨论】:
标签: javascript ios html youtube youtube-api