132 lines
3.6 KiB
C#
132 lines
3.6 KiB
C#
// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖
|
|
|
|
using System;
|
|
using UnityEngine;
|
|
using FairyGUI;
|
|
using NBC;
|
|
using RenderHeads.Media.AVProVideo;
|
|
|
|
namespace NBF
|
|
{
|
|
public partial class VideoPlayer : GComponent
|
|
{
|
|
private NTexture _texture;
|
|
private float _defY;
|
|
|
|
private void OnInited()
|
|
{
|
|
VideoManager.Instance.OnPlayStart += OnPlayStart;
|
|
VideoManager.Instance.OnHandleEvent += OnHandleEvent;
|
|
BtnPause.onClick.Set(OnClickPause);
|
|
|
|
SwipeGesture gesture = new SwipeGesture(BtnPause);
|
|
gesture.onBegin.Set(OnSwipeBegin);
|
|
gesture.onMove.Set(OnSwipeMove);
|
|
gesture.onEnd.Set(OnSwipeEnd);
|
|
gesture.onAction.Add(OnSwipeGesture);
|
|
_defY = VideoVer.y;
|
|
// Video.texture = new NTexture(Game.Instance.RT);
|
|
// Player.on
|
|
// Player.OpenMedia()
|
|
}
|
|
|
|
public override void Dispose()
|
|
{
|
|
VideoManager.Instance.OnPlayStart -= OnPlayStart;
|
|
VideoManager.Instance.OnHandleEvent -= OnHandleEvent;
|
|
if (_texture != null)
|
|
{
|
|
_texture.Dispose();
|
|
}
|
|
|
|
base.Dispose();
|
|
}
|
|
|
|
#region 手势
|
|
|
|
private float _offsetValue;
|
|
|
|
private void OnSwipeBegin(EventContext context)
|
|
{
|
|
}
|
|
|
|
private void OnSwipeMove(EventContext context)
|
|
{
|
|
var gesture = context.sender as SwipeGesture;
|
|
if (gesture == null) return;
|
|
Log.Info($"gesture.delta.y={gesture.delta.y}");
|
|
_offsetValue += gesture.delta.y;
|
|
VideoVer.y = _defY + _offsetValue;
|
|
}
|
|
|
|
private void OnSwipeEnd(EventContext context)
|
|
{
|
|
_offsetValue = 0;
|
|
VideoVer.y = _defY;
|
|
}
|
|
|
|
private void OnSwipeGesture(EventContext context)
|
|
{
|
|
SwipeGesture swipeGesture = (SwipeGesture)context.sender;
|
|
var value = Math.Abs(swipeGesture.position.y);
|
|
if (value < 200)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (swipeGesture.position.y < 0) //向上滑动
|
|
{
|
|
Log.Info($"向上滑动 y={swipeGesture.position.y}");
|
|
VideoManager.Instance.Next();
|
|
}
|
|
else
|
|
{
|
|
Log.Info($"向下滑动 y={swipeGesture.position.y}");
|
|
VideoManager.Instance.Previous();
|
|
}
|
|
|
|
VideoVer.alpha = 0;
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
private void OnHandleEvent(MediaPlayerEvent.EventType eventType)
|
|
{
|
|
if (eventType == MediaPlayerEvent.EventType.Paused)
|
|
{
|
|
// pauseCtrl.selectedIndex = 1;
|
|
}
|
|
// else if (eventType == MediaPlayerEvent.EventType.Unpaused ||
|
|
// eventType == MediaPlayerEvent.EventType.Started)
|
|
// {
|
|
// // pauseCtrl.selectedIndex = 0;
|
|
// }
|
|
else if (eventType == MediaPlayerEvent.EventType.Started)
|
|
{
|
|
StartedAnim.Play();
|
|
}
|
|
}
|
|
|
|
private void OnPlayStart(RenderTexture rt)
|
|
{
|
|
if (_texture != null)
|
|
{
|
|
_texture.Dispose();
|
|
}
|
|
|
|
_texture = new NTexture(rt);
|
|
VideoVer.texture = _texture;
|
|
}
|
|
|
|
|
|
#region 播放控制
|
|
|
|
private void OnClickPause()
|
|
{
|
|
VideoManager.Instance.TogglePlayPause();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |