public override void OnEndDrag(PointerEventData eventData) { if (routeToParent) { parentScrollRect?.OnEndDrag(eventData); } else { base.OnEndDrag(eventData); } routeToParent = false; }
public void ShowSide(bool move) { int index = 0; unLockData = HeroMgr.GetSingleton().Heros; if (move) { maxHeight = (unLockData.Length + 0.5f) * (glg.spacing.y + glg.cellSize.y); maxWidth = (glg.spacing.x + glg.cellSize.x); Vector2 v = rect.sizeDelta; v.x = maxWidth; v.y = maxHeight; rect.sizeDelta = v; } for (int i = 0; i < unLockData.Length; ++i) { GameObject go; HeroData data = unLockData[i]; if (instantiate.ContainsKey(data)) { go = instantiate[data]; } else { go = Instantiate(headGo, LeftContent_obj.transform, false); instantiate.Add(data, go); } if (data.HeroId == heroData.HeroId) { index = i; sideselect_trf.SetParent(go.transform); sideselect_trf.localPosition = Vector3.zero; if (move) { Vector2 v2 = sr.content.anchoredPosition; v2.y = -maxHeight + index * glg.cellSize.y; sr.content.anchoredPosition = v2; } } EventListener.Get(go).OnClick = e => { if (isOnDrag) { return; } Close(); sideselect_trf.SetParent(e.transform); sideselect_trf.localPosition = Vector3.zero; Open(data.HeroId, showType, false); }; EventListener.Get(go).BegineDragEvent = e => { isOnDrag = true; sr.OnBeginDrag(e); }; EventListener.Get(go).DragEvent = e => { sr.OnDrag(e); }; EventListener.Get(go).EndDragEvent = e => { isOnDrag = false; sr.OnEndDrag(e); }; HeroHeadView hhv = go.GetComponent <HeroHeadView>(); hhv.Init(); hhv.SetHeroInfo(data.HeroId, data.Rare, data.Star, data.Level); } //算法还没有 Power_txt.text = "583138"; LeftLevel_txt.text = heroData.Level.ToString(); int needExp = JsonMgr.GetSingleton().GetExpByID(Mathf.Max(1, heroData.Level)).NeedHero; Exp_slider.value = (heroData.Exp * 100 / needExp * 100) * 0.01f; Exp_txt.text = heroData.Exp + "/" + needExp; if (showType == EHEROSHOWTYPE.Card) { ShowCard(); } else if (showType == EHEROSHOWTYPE.Divination) { ShowDivination(); } else if (showType == EHEROSHOWTYPE.Detail) { ShowDetail(); } }
public void OnEndDrag(PointerEventData eventData) { MainScroll.OnEndDrag(eventData); }
public void OnPointerUp(PointerEventData eventData) { parent.OnEndDrag(eventData); }
public void OnEndDrag(PointerEventData e) { dragStat = 0; scrRct.vertical = true; // scrollRsctの再開 transform.DoParentEventSystemHandler <IEndDragHandler>((parent) => { scrRct.OnEndDrag(e); }); }
public void OnEndDrag(PointerEventData eventData) { if (passTouchToFallback) { fallbackTouchObject.OnEndDrag(eventData); return; } if (status != TableStatus.Touch) { return; } SetStatus(TableStatus.Fling); flingVelocityCalculate.addPoint(eventData.position, Time.deltaTime); Vector2 velocity = flingVelocityCalculate.computeCurrentVelocity(); if (KSDebug.enableLog) { KSDebug.Log("fling velocity = " + velocity.ToString()); } flingVelocityCalculate.Reset(); float targetRadian; if (isGearScrollMode) { //齿轮滚动模式 targetRadian = FliterRotationRadian(roundTableRotationRadian + GearFlingVelocity2RotationRadian(velocity)); } else { //惯性滚动模式 //松手后要滚动的距离 float xf = velocity.x == 0 ? 1 : velocity.x / Mathf.Abs(velocity.x); float yf = velocity.y == 0 ? 1 : velocity.y / Mathf.Abs(velocity.y); float xs = xf * Mathf.Pow(velocity.x, 2) / (2 * flingResistance); float ys = yf * Mathf.Pow(velocity.y, 2) / (2 * flingResistance); targetRadian = roundTableRotationRadian + TouchDelat2RotationRadian(xs, ys); targetRadian = FliterRotationRadian(targetRadian); } //停靠到最进的一个弧度上 float maxNearRandian; float minNearRandian; if (targetRadian >= 0) { minNearRandian = ((int)(targetRadian / eachRadian)) * eachRadian; maxNearRandian = minNearRandian + eachRadian; } else { maxNearRandian = ((int)(targetRadian / eachRadian)) * eachRadian; minNearRandian = maxNearRandian - eachRadian; } float toRandian; if (maxNearRandian >= maxRotationRadian) {//达到顺时针的边界 toRandian = minNearRandian; } else if (minNearRandian <= minRotationRadian) {//达到逆时针边界 toRandian = maxNearRandian; } else { toRandian = Mathf.Abs(targetRadian - maxNearRandian) > Mathf.Abs(minNearRandian - targetRadian) ? minNearRandian : maxNearRandian; } if (Mathf.Abs(toRandian - roundTableRotationRadian) < 0.01) { roundTableRotationRadian = toRandian; SetStatus(TableStatus.Idle); } else { //记录fling目标,在后续update中进行动画滚动 flingToTargetRandian = toRandian; } }