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
|
transform.Find("1").localPosition,transform.Find("2").localPosition,transform.Find("3").localPosition
|
||||||
};
|
};
|
||||||
|
AddTouchEvent();
|
||||||
|
|
||||||
|
|
||||||
Debug.Log(standardPositions[0]);
|
Debug.Log(standardPositions[0]);
|
||||||
Debug.Log(standardPositions[1]);
|
Debug.Log(standardPositions[1]);
|
||||||
Debug.Log(standardPositions[2]);
|
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()
|
private void Start()
|
||||||
{
|
{
|
||||||
GetList();
|
GetList();
|
||||||
@ -60,9 +130,9 @@ public class BannerController : MonoBehaviour
|
|||||||
{
|
{
|
||||||
var area = list[index++];
|
var area = list[index++];
|
||||||
c.GetComponent<NewRouteItemController>().Initial(area);
|
c.GetComponent<NewRouteItemController>().Initial(area);
|
||||||
|
c.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||||
if (c.alpha != 1)
|
if (c.alpha != 1)
|
||||||
{
|
{
|
||||||
c.GetComponent<Button>().onClick.RemoveAllListeners();
|
|
||||||
if (c.transform.localPosition.x < 0)
|
if (c.transform.localPosition.x < 0)
|
||||||
{
|
{
|
||||||
c.GetComponent<Button>().onClick.AddListener(Right);
|
c.GetComponent<Button>().onClick.AddListener(Right);
|
||||||
@ -72,6 +142,10 @@ public class BannerController : MonoBehaviour
|
|||||||
c.GetComponent<Button>().onClick.AddListener(Left);
|
c.GetComponent<Button>().onClick.AddListener(Left);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
c.GetComponent<Button>().onClick.AddListener(()=>GoDetail(c));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
currentIndex = 1;
|
currentIndex = 1;
|
||||||
this.list = list;
|
this.list = list;
|
||||||
@ -79,68 +153,69 @@ public class BannerController : MonoBehaviour
|
|||||||
private void Right()
|
private void Right()
|
||||||
{
|
{
|
||||||
int center = GetCenterIndex(),
|
int center = GetCenterIndex(),
|
||||||
left = GetSideIndex(true),
|
left = GetSideIndex(true),
|
||||||
right = GetSideIndex(false);
|
right = GetSideIndex(false);
|
||||||
if (center == -1 || left == -1 || right == -1) return;
|
if (center == -1 || left == -1 || right == -1) return;
|
||||||
itemList[center].DOFade(0.5f, 0.5f);
|
DOTween.CompleteAll();
|
||||||
itemList[center].GetComponent<RectTransform>().DOScale(Vector3.one * 0.8f, 0.5f);
|
DORight(itemList[left], itemList[center], itemList[right]);
|
||||||
itemList[center].GetComponent<RectTransform>().DOLocalMoveX(43, 0.5f);
|
}
|
||||||
itemList[right].GetComponent<RectTransform>().DOLocalMoveX(-43, 0.5f);
|
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];
|
var area = list[((currentIndex++) + list.Count) % list.Count];
|
||||||
itemList[right].GetComponent<NewRouteItemController>().Initial(area);
|
right.GetComponent<NewRouteItemController>().Initial(area);
|
||||||
if (currentIndex >= list.Count) currentIndex = 0;
|
if (currentIndex >= list.Count) currentIndex = 0;
|
||||||
itemList[left].DOFade(1, 0.5f);
|
se.Join(left.DOFade(1, 0.5f));
|
||||||
itemList[left].GetComponent<RectTransform>().DOScale(Vector3.one, 0.5f);
|
se.Join(left.GetComponent<RectTransform>().DOScale(Vector3.one, 0.5f));
|
||||||
itemList[left].GetComponent<RectTransform>().DOLocalMoveX(0, 0.5f);
|
se.Join(left.GetComponent<RectTransform>().DOLocalMoveX(0, 0.5f));
|
||||||
itemList[left].transform.SetAsLastSibling();
|
se.Play();
|
||||||
|
left.transform.SetAsLastSibling();
|
||||||
//事件改变
|
//事件改变
|
||||||
itemList[left].GetComponent<Button>().onClick.RemoveAllListeners();
|
left.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||||
itemList[left].GetComponent<Button>().onClick.AddListener(()=>
|
left.GetComponent<Button>().onClick.AddListener(() => GoDetail(left));
|
||||||
{
|
center.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||||
if (itemList[left].transform.localPosition.x == 0)
|
center.GetComponent<Button>().onClick.AddListener(Left);
|
||||||
{
|
right.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||||
UIManager.ShowNewRouteDetailPanel(itemList[left].GetComponent<NewRouteItemController>().Area);
|
right.GetComponent<Button>().onClick.AddListener(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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Left()
|
private void Left()
|
||||||
{
|
{
|
||||||
int center = GetCenterIndex(),
|
int center = GetCenterIndex(),
|
||||||
left = GetSideIndex(true),
|
left = GetSideIndex(true),
|
||||||
right = GetSideIndex(false);
|
right = GetSideIndex(false);
|
||||||
if (center == -1 || left == -1 || right == -1) return;
|
if (center == -1 || left == -1 || right == -1) return;
|
||||||
itemList[center].DOFade(0.5f, 0.5f);
|
DOTween.CompleteAll();
|
||||||
itemList[center].GetComponent<RectTransform>().DOScale(Vector3.one*0.8f, 0.5f);
|
DOLeft(itemList[left], itemList[center], itemList[right]);
|
||||||
itemList[center].GetComponent<RectTransform>().DOLocalMoveX(-43, 0.5f);
|
}
|
||||||
itemList[left].GetComponent<RectTransform>().DOLocalMoveX(43, 0.5f);
|
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 area = list[((currentIndex--) + list.Count) % list.Count];
|
||||||
var centerArea = list[currentIndex + 1];
|
var centerArea = list[currentIndex + 1];
|
||||||
itemList[left].GetComponent<NewRouteItemController>().Initial(area);
|
left.GetComponent<NewRouteItemController>().Initial(area);
|
||||||
if (currentIndex < 0) currentIndex = list.Count - 1;
|
if (currentIndex < 0) currentIndex = list.Count - 1;
|
||||||
itemList[right].DOFade(1, 0.5f);
|
se.Join(right.DOFade(1, 0.5f));
|
||||||
itemList[right].GetComponent<RectTransform>().DOScale(Vector3.one, 0.5f);
|
se.Join(right.GetComponent<RectTransform>().DOScale(Vector3.one, 0.5f));
|
||||||
itemList[right].GetComponent<RectTransform>().DOLocalMoveX(0, 0.5f);
|
se.Join(right.GetComponent<RectTransform>().DOLocalMoveX(0, 0.5f));
|
||||||
itemList[right].transform.SetAsLastSibling();
|
se.Play();
|
||||||
|
right.transform.SetAsLastSibling();
|
||||||
//事件改变
|
//事件改变
|
||||||
itemList[right].GetComponent<Button>().onClick.RemoveAllListeners();
|
right.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||||
itemList[right].GetComponent<Button>().onClick.AddListener(() =>
|
right.GetComponent<Button>().onClick.AddListener(() => GoDetail(right));
|
||||||
{
|
center.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||||
if (itemList[right].transform.localPosition.x == 0)
|
center.GetComponent<Button>().onClick.AddListener(Right);
|
||||||
{
|
left.GetComponent<Button>().onClick.RemoveAllListeners();
|
||||||
UIManager.ShowNewRouteDetailPanel(itemList[right].GetComponent<NewRouteItemController>().Area);
|
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()
|
int GetCenterIndex()
|
||||||
{
|
{
|
||||||
return itemList.FindIndex(x => x.transform.localPosition.x == 0);
|
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);
|
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
|
// Update is called once per frame
|
||||||
void Update()
|
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()
|
public override void Show()
|
||||||
{
|
{
|
||||||
base.Show();
|
base.Show();
|
||||||
|
transform.MyDOFade();
|
||||||
if (App.TextureCache.ContainsKey("rotateImage"))
|
if (App.TextureCache.ContainsKey("rotateImage"))
|
||||||
{
|
{
|
||||||
transform.Find("RawImage").GetComponent<RawImage>().texture = App.TextureCache["rotateImage"];
|
transform.Find("RawImage").GetComponent<RawImage>().texture = App.TextureCache["rotateImage"];
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
</packages>
|
</packages>
|
||||||
<files />
|
<files />
|
||||||
<settings>
|
<settings>
|
||||||
<setting name="androidAbis" value="armeabi-v7a" />
|
<setting name="androidAbis" value="arm64-v8a,armeabi-v7a" />
|
||||||
<setting name="bundleId" value="com.ZhiXingPai.PowerFunUnity" />
|
<setting name="bundleId" value="com.ZhiXingPai.PowerFunUnity" />
|
||||||
<setting name="explodeAars" value="True" />
|
<setting name="explodeAars" value="True" />
|
||||||
<setting name="gradleBuildEnabled" value="True" />
|
<setting name="gradleBuildEnabled" value="True" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user