Vector2 GetNearestItemCenter() { // 计算最近的 item 的 rect var lockPoint = GetScrollRectCenter(); var itemList = sampleizeScrollRect.ItemList; var shotestDistance = float.MaxValue; Vector2 nearestItemCenter = Vector2.zero; var nearestItemIndex = -1; for (var i = 0; i < itemList.Count; i++) { var item = itemList[i]; var rect = RectTransformUtil.GetWorldRect(item.GetComponent <RectTransform>()); var center = rect.center; var distanceP2 = MathUtil.PointDistancePower2(lockPoint, center); if (distanceP2 < shotestDistance) { shotestDistance = distanceP2; nearestItemCenter = center; nearestItemIndex = i; } } Debug.Log(nearestItemIndex); return(nearestItemCenter); }
public override void Play(Page oldPage, Page newPage) { oldPage.Active = true; newPage.Active = true; // var canvas = UIEngine.Canvas.GetComponent<RectTransform>(); // var canvasWidth = canvas.rect.width * canvas.localScale.x; // var canvasHeight = canvas.rect.height * canvas.localScale.y; var canvasRect = RectTransformUtil.GetWorldRect(UIEngine.Canvas.GetComponent <RectTransform>()); // newPage.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, rect.xMin, rect.size.x); // newPage.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, rect.yMin,rect.size.y); // var targetPosition = newPage.transform.position; //var targetPosition = new Vector2(canvasWidth/2, canvasHeight/2); var targetPosition = canvasRect.center; Debug.Log(targetPosition); var fromPosition = this.rect.center; newPage.transform.position = fromPosition; newPage.rectTransform.DOMove(targetPosition, DURATION); var fromScaleX = 0; //this.rect.width / canvasWidth; var fromScaleY = 0; //this.rect.height / canvasHeight; newPage.rectTransform.localScale = new Vector2(fromScaleX, fromScaleY); newPage.rectTransform.DOScale(Vector2.one, DURATION); var cg = TryGetComponent <CanvasGroup>(newPage.gameObject); cg.alpha = DURATION; cg.DOFade(1, DURATION).OnComplete(() => { this.finished = true; oldPage.Active = false; }); }
public Vector2 GetScrollRectCenter() { var scrollRectTransform = sampleizeScrollRect.GetComponent <RectTransform>(); var scrollRectWorldRect = RectTransformUtil.GetWorldRect(scrollRectTransform); var scrollRectCenter = scrollRectWorldRect.center; var lockPoint = scrollRectCenter; return(lockPoint); }
Vector2 GetCenterOfItem(int index) { var itemList = sampleizeScrollRect.ItemList; var item = itemList[index]; var rect = RectTransformUtil.GetWorldRect(item.GetComponent <RectTransform>()); var center = rect.center; return(center); }
public void OnItemClick(MainPage_Item item) { AudioManager.PlaySe("button"); var param = new PicturePageParam(); param.pageType = item.data.pageType; if (item.data.pageType == PicturePageType.Pictype) { param.picTypeId = item.data.row.Get <string>("id"); } var rt = item.GetComponent <RectTransform>(); var rect = RectTransformUtil.GetWorldRect(rt); var admission = new Admission_ScaleUpNewPage(rect); UIEngine.Forward <PicturePage>(param, admission); HeadBarFloating.admission = new Admission_ScaleDownOldPage(rect); RadioStation.Brodcast("SELECT_PIC_TYPE"); }
public void Update() { // tween center at frame 2 lostTime += Time.deltaTime; if (lostTime >= 0.3f) { if (first) { if (!GuideFloating.guideMode) { var b = HasUncompleteGame(PicId); if (b) { var info = PlayerStatus.TryGetUncompleteOfPicId(PicId); var sliceId = info.sliceId; var itemIndex = sliceId - 1; TweenItemToCenter(itemIndex); } else { TweenNearestToCenter(); } } else { TweenItemToCenter(0); } first = false; } } // 计算离中心点最近的 item var itemList = sampleizeScrollRect.ItemList; var scrollRectTransform = sampleizeScrollRect.GetComponent <RectTransform>(); var scrollRectWorldRect = RectTransformUtil.GetWorldRect(scrollRectTransform); var scrollRectCenter = scrollRectWorldRect.center; var lockPoint = scrollRectCenter; var shotestDistance = float.MaxValue; Vector2 nearestItemCenter = Vector2.zero; var nearestItemIndex = -1; for (var i = 0; i < itemList.Count; i++) { var item = itemList[i]; var rect = RectTransformUtil.GetWorldRect(item.GetComponent <RectTransform>()); var center = rect.center; var distanceP2 = MathUtil.PointDistancePower2(lockPoint, center); if (distanceP2 < shotestDistance) { shotestDistance = distanceP2; nearestItemCenter = center; nearestItemIndex = i; } } // 选中这个 item for (var i = 0; i < itemList.Count; i++) { var item = itemList[i]; var itemComp = item.GetComponent <LevelSettingsPage_Item>(); if (i == nearestItemIndex) { itemComp.SetBig(); selectItem = itemComp; } else { itemComp.SetSmall(); } } }
public Rect WorldRect() { return(RectTransformUtil.GetWorldRect(this.GetComponent <RectTransform>())); }