banner手势滑动,点击效果;自动滚动
This commit is contained in:
parent
7f7318fb36
commit
537ae2d6ed
@ -27,11 +27,81 @@ public class BannerController : MonoBehaviour
|
||||
{
|
||||
transform.Find("1").localPosition,transform.Find("2").localPosition,transform.Find("3").localPosition
|
||||
};
|
||||
AddTouchEvent();
|
||||
|
||||
|
||||
Debug.Log(standardPositions[0]);
|
||||
Debug.Log(standardPositions[1]);
|
||||
Debug.Log(standardPositions[2]);
|
||||
}
|
||||
TKPanRecognizer pan;
|
||||
private void AddTouchEvent()
|
||||
{
|
||||
pan = new TKPanRecognizer();
|
||||
var panList = new List<CanvasGroup>();
|
||||
pan.gestureRecognizedEvent += (r) =>
|
||||
{
|
||||
if (!App.currentPageIsHome) return;
|
||||
int center = GetCenterIndex(),
|
||||
left = GetSideIndex(true),
|
||||
right = GetSideIndex(false);
|
||||
if (!(center == -1 || left == -1 || right == -1) && panList.Count == 0)
|
||||
{
|
||||
panList.Add(itemList[left]);
|
||||
panList.Add(itemList[center]);
|
||||
panList.Add(itemList[right]);
|
||||
}
|
||||
if (panList.Count == 0) return;
|
||||
var startPoint = r.startTouchLocation();
|
||||
if (((RectTransform)transform).isPointInTransfrom(startPoint))
|
||||
{
|
||||
foreach (var item in panList)
|
||||
{
|
||||
item.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
}
|
||||
var offset = pan.deltaTranslation;
|
||||
if (panList[1].transform.localPosition.x == 0)
|
||||
{
|
||||
panList[1].transform.DOScale(0.8f, 0.5f);
|
||||
}
|
||||
if (offset.x > 0)
|
||||
{
|
||||
//-43 0 43
|
||||
//后面的 如果往左,需要回到-43再往右
|
||||
panList[0].transform.localPosition += new Vector3(1, 0, 0);
|
||||
panList[1].transform.localPosition += new Vector3(1, 0, 0);
|
||||
panList[2].transform.localPosition += new Vector3(-1, 0, 0);
|
||||
}
|
||||
else if (offset.x < 0)
|
||||
{
|
||||
panList[0].transform.localPosition += new Vector3(1, 0, 0);
|
||||
panList[1].transform.localPosition += new Vector3(-1, 0, 0);
|
||||
//后面的 如果往右,需要回到43再往左
|
||||
panList[2].transform.localPosition += new Vector3(-1, 0, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
panList.Clear();
|
||||
}
|
||||
};
|
||||
pan.gestureCompleteEvent += (r) =>
|
||||
{
|
||||
if (!App.currentPageIsHome) return;
|
||||
if (panList.Count == 0) return;
|
||||
if (panList[1].transform.localPosition.x < 0)
|
||||
{
|
||||
DOLeft(panList[0], panList[1], panList[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
DORight(panList[0], panList[1], panList[2]);
|
||||
}
|
||||
panList.Clear();
|
||||
};
|
||||
TouchKit.addGestureRecognizer(pan);
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
GetList();
|
||||
@ -60,9 +130,9 @@ public class BannerController : MonoBehaviour
|
||||
{
|
||||
var area = list[index++];
|
||||
c.GetComponent<NewRouteItemController>().Initial(area);
|
||||
c.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
if (c.alpha != 1)
|
||||
{
|
||||
c.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
if (c.transform.localPosition.x < 0)
|
||||
{
|
||||
c.GetComponent<Button>().onClick.AddListener(Right);
|
||||
@ -72,6 +142,10 @@ public class BannerController : MonoBehaviour
|
||||
c.GetComponent<Button>().onClick.AddListener(Left);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
c.GetComponent<Button>().onClick.AddListener(()=>GoDetail(c));
|
||||
}
|
||||
}
|
||||
currentIndex = 1;
|
||||
this.list = list;
|
||||
@ -82,30 +156,31 @@ public class BannerController : MonoBehaviour
|
||||
left = GetSideIndex(true),
|
||||
right = GetSideIndex(false);
|
||||
if (center == -1 || left == -1 || right == -1) return;
|
||||
itemList[center].DOFade(0.5f, 0.5f);
|
||||
itemList[center].GetComponent<RectTransform>().DOScale(Vector3.one * 0.8f, 0.5f);
|
||||
itemList[center].GetComponent<RectTransform>().DOLocalMoveX(43, 0.5f);
|
||||
itemList[right].GetComponent<RectTransform>().DOLocalMoveX(-43, 0.5f);
|
||||
var area = list[((currentIndex++) + list.Count) % list.Count];
|
||||
itemList[right].GetComponent<NewRouteItemController>().Initial(area);
|
||||
if (currentIndex >= list.Count) currentIndex = 0;
|
||||
itemList[left].DOFade(1, 0.5f);
|
||||
itemList[left].GetComponent<RectTransform>().DOScale(Vector3.one, 0.5f);
|
||||
itemList[left].GetComponent<RectTransform>().DOLocalMoveX(0, 0.5f);
|
||||
itemList[left].transform.SetAsLastSibling();
|
||||
//事件改变
|
||||
itemList[left].GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
itemList[left].GetComponent<Button>().onClick.AddListener(()=>
|
||||
{
|
||||
if (itemList[left].transform.localPosition.x == 0)
|
||||
{
|
||||
UIManager.ShowNewRouteDetailPanel(itemList[left].GetComponent<NewRouteItemController>().Area);
|
||||
DOTween.CompleteAll();
|
||||
DORight(itemList[left], itemList[center], itemList[right]);
|
||||
}
|
||||
});
|
||||
itemList[center].GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
itemList[center].GetComponent<Button>().onClick.AddListener(Left);
|
||||
itemList[right].GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
itemList[right].GetComponent<Button>().onClick.AddListener(Right);
|
||||
void DORight(CanvasGroup left, CanvasGroup center, CanvasGroup right)
|
||||
{
|
||||
Sequence se = DOTween.Sequence();
|
||||
se.Join(center.DOFade(0.5f, 0.5f));
|
||||
se.Join(center.GetComponent<RectTransform>().DOScale(Vector3.one * 0.8f, 0.5f));
|
||||
se.Join(center.GetComponent<RectTransform>().DOLocalMoveX(43, 0.5f));
|
||||
se.Join(right.GetComponent<RectTransform>().DOLocalMoveX(-43, 0.5f));
|
||||
var area = list[((currentIndex++) + list.Count) % list.Count];
|
||||
right.GetComponent<NewRouteItemController>().Initial(area);
|
||||
if (currentIndex >= list.Count) currentIndex = 0;
|
||||
se.Join(left.DOFade(1, 0.5f));
|
||||
se.Join(left.GetComponent<RectTransform>().DOScale(Vector3.one, 0.5f));
|
||||
se.Join(left.GetComponent<RectTransform>().DOLocalMoveX(0, 0.5f));
|
||||
se.Play();
|
||||
left.transform.SetAsLastSibling();
|
||||
//事件改变
|
||||
left.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
left.GetComponent<Button>().onClick.AddListener(() => GoDetail(left));
|
||||
center.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
center.GetComponent<Button>().onClick.AddListener(Left);
|
||||
right.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
right.GetComponent<Button>().onClick.AddListener(Right);
|
||||
}
|
||||
|
||||
private void Left()
|
||||
@ -114,33 +189,33 @@ public class BannerController : MonoBehaviour
|
||||
left = GetSideIndex(true),
|
||||
right = GetSideIndex(false);
|
||||
if (center == -1 || left == -1 || right == -1) return;
|
||||
itemList[center].DOFade(0.5f, 0.5f);
|
||||
itemList[center].GetComponent<RectTransform>().DOScale(Vector3.one*0.8f, 0.5f);
|
||||
itemList[center].GetComponent<RectTransform>().DOLocalMoveX(-43, 0.5f);
|
||||
itemList[left].GetComponent<RectTransform>().DOLocalMoveX(43, 0.5f);
|
||||
DOTween.CompleteAll();
|
||||
DOLeft(itemList[left], itemList[center], itemList[right]);
|
||||
}
|
||||
void DOLeft(CanvasGroup left, CanvasGroup center, CanvasGroup right)
|
||||
{
|
||||
Sequence se = DOTween.Sequence();
|
||||
se.Join(center.DOFade(0.5f, 0.5f));
|
||||
se.Join(center.GetComponent<RectTransform>().DOScale(Vector3.one * 0.8f, 0.5f));
|
||||
se.Join(center.GetComponent<RectTransform>().DOLocalMoveX(-43, 0.5f));
|
||||
se.Join(left.GetComponent<RectTransform>().DOLocalMoveX(43, 0.5f));
|
||||
var area = list[((currentIndex--) + list.Count) % list.Count];
|
||||
var centerArea = list[currentIndex + 1];
|
||||
itemList[left].GetComponent<NewRouteItemController>().Initial(area);
|
||||
left.GetComponent<NewRouteItemController>().Initial(area);
|
||||
if (currentIndex < 0) currentIndex = list.Count - 1;
|
||||
itemList[right].DOFade(1, 0.5f);
|
||||
itemList[right].GetComponent<RectTransform>().DOScale(Vector3.one, 0.5f);
|
||||
itemList[right].GetComponent<RectTransform>().DOLocalMoveX(0, 0.5f);
|
||||
itemList[right].transform.SetAsLastSibling();
|
||||
se.Join(right.DOFade(1, 0.5f));
|
||||
se.Join(right.GetComponent<RectTransform>().DOScale(Vector3.one, 0.5f));
|
||||
se.Join(right.GetComponent<RectTransform>().DOLocalMoveX(0, 0.5f));
|
||||
se.Play();
|
||||
right.transform.SetAsLastSibling();
|
||||
//事件改变
|
||||
itemList[right].GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
itemList[right].GetComponent<Button>().onClick.AddListener(() =>
|
||||
{
|
||||
if (itemList[right].transform.localPosition.x == 0)
|
||||
{
|
||||
UIManager.ShowNewRouteDetailPanel(itemList[right].GetComponent<NewRouteItemController>().Area);
|
||||
right.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
right.GetComponent<Button>().onClick.AddListener(() => GoDetail(right));
|
||||
center.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
center.GetComponent<Button>().onClick.AddListener(Right);
|
||||
left.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
left.GetComponent<Button>().onClick.AddListener(Left);
|
||||
}
|
||||
});
|
||||
itemList[center].GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
itemList[center].GetComponent<Button>().onClick.AddListener(Right);
|
||||
itemList[left].GetComponent<Button>().onClick.RemoveAllListeners();
|
||||
itemList[left].GetComponent<Button>().onClick.AddListener(Left);
|
||||
}
|
||||
|
||||
int GetCenterIndex()
|
||||
{
|
||||
return itemList.FindIndex(x => x.transform.localPosition.x == 0);
|
||||
@ -149,9 +224,34 @@ public class BannerController : MonoBehaviour
|
||||
{
|
||||
return itemList.FindIndex(x => left ? x.transform.localPosition.x < 0 : x.transform.localPosition.x > 0);
|
||||
}
|
||||
void GoDetail(CanvasGroup c)
|
||||
{
|
||||
if (c.transform.localPosition.x == 0)
|
||||
{
|
||||
var se = DOTween.Sequence();
|
||||
se.Append(c.transform.DOScale(1.05f * Vector3.one, 0.15f));
|
||||
se.Append(c.transform.DOScale(1f * Vector3.one, 0.15f));
|
||||
se.Play().onComplete = ()=>
|
||||
{
|
||||
UIManager.ShowNewRouteDetailPanel(c.GetComponent<NewRouteItemController>().Area);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
float autoTime = 5;
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
autoTime -= Time.deltaTime;
|
||||
if (autoTime < 0)
|
||||
{
|
||||
Left();
|
||||
autoTime += 5;
|
||||
}
|
||||
}
|
||||
private void OnDestroy()
|
||||
{
|
||||
Debug.Log(248+"毁灭");
|
||||
TouchKit.removeGestureRecognizer(pan);
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@ public class NewRouteDetailController : PFUIPanel
|
||||
public override void Show()
|
||||
{
|
||||
base.Show();
|
||||
transform.MyDOFade();
|
||||
if (App.TextureCache.ContainsKey("rotateImage"))
|
||||
{
|
||||
transform.Find("RawImage").GetComponent<RawImage>().texture = App.TextureCache["rotateImage"];
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
</packages>
|
||||
<files />
|
||||
<settings>
|
||||
<setting name="androidAbis" value="armeabi-v7a" />
|
||||
<setting name="androidAbis" value="arm64-v8a,armeabi-v7a" />
|
||||
<setting name="bundleId" value="com.ZhiXingPai.PowerFunUnity" />
|
||||
<setting name="explodeAars" value="True" />
|
||||
<setting name="gradleBuildEnabled" value="True" />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user