//JSから呼ばれる public void Invoked(string cmd, string args) { switch (cmd) { case "widtheight": Owner.Resolution = args; break; case "bufferingstart": Owner.IsBuffering = true; break; case "bufferingend": Owner.IsBuffering = false; break; case "playstate": if (!string.IsNullOrEmpty(args)) { Owner.IsPlaying = bool.Parse(args); } break; case "click": if (Settings.Instance.ClickOnPause) { Owner.TogglePlay(); } break; case "mousewheel": if (!string.IsNullOrEmpty(args)) { var vol = int.Parse(args); if (vol >= 0) { Owner.Volume += 2; } else { Owner.Volume -= 2; } } break; case "currenttime": { dynamic json = DynamicJson.Parse(args); if (json.played()) { Owner.PlayedRange.Clear(); foreach (var play in json.played) { Owner.PlayedRange.Add(new TimeRange() { StartTime = play.start, EndTime = play.end }); } } if (json.buffered()) { Owner.BufferedRange.Clear(); foreach (var buffer in json.buffered) { Owner.BufferedRange.Add(new TimeRange() { StartTime = buffer.start, EndTime = buffer.end }); } } if (json.time()) { Owner.CurrentTime = json.time; } if (json.vpos()) { if (Owner.Comment.CommentVisibility) { Owner.Comment.CommentTick((int)json.vpos); } } break; } case "ended": { if (Owner.IsRepeat) { Owner.Restart(); Play(); } else { if (Owner.IsFullScreen && !Owner.IsPlayList()) { Window.GetWindow(Owner.FullScreenWebBrowser)?.Close(); } } if (Owner.ApiData != null) { //現在再生位置を初期化する Owner.WatchiApiInstance.RecordPlaybackPositionAsync(Owner.ApiData, 0); } Owner.VideoEnd(); break; } case "showcontroller": { Owner.ShowFullScreenController = true; break; } case "hidecontroller": { if (!Settings.Instance.AlwaysShowSeekBar) { Owner.ShowFullScreenController = false; } break; } case "alldataloaded": DmcHeartBeatTimer.Enabled = false; break; default: Console.WriteLine("Invoked: " + cmd); break; } }