using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using UnityEngine.EventSystems;
using System;
//点击图片,图片居中放大显示,向左拖动中心放大的图片,图片向左翻转,向右拖动中心放大的图片,图片向右翻转
public class ClickImage1019_Image : MonoBehaviour, IDragHandler, IPointerClickHandler,IBeginDragHandler,IEndDragHandler
{
private Image curImage;//当前图片正面
private Image image_image;//当前图片背面,当前图片子图片
private bool isZ = true;//是否为正面=是
private Vector2 mouseDown = Vector2.zero;//鼠标按下时的坐标
private Vector2 mouseUp = Vector2.zero;//鼠标抬起时的坐标
private void Awake()
{
curImage = GetComponent<Image>();
image_image = transform.Find("ImageBack").GetComponent<Image>();
image_image.transform.gameObject.SetActive(false);
}
void Start()
{
}
//显示背面
void ShowBack()
{
curImage.rectTransform.rotation = Quaternion.identity;
isZ = false;
image_image.gameObject.SetActive(true);
}
//显示正面,隐藏背面
void HideBack()
{
curImage.rectTransform.rotation = Quaternion.identity;
isZ = true;
image_image.gameObject.SetActive(false);
}
//点击接口:
public void OnPointerClick(PointerEventData eventData)
{
OnButtonClick();
}
//拖动开始接口
public void OnBeginDrag(PointerEventData eventData)
{
mouseDown = eventData.position;
}
//拖动中接口
public void OnDrag(PointerEventData eventData)
{
}
//拖动结束接口
public void OnEndDrag(PointerEventData eventData)
{
mouseUp = eventData.position;
//拖动图片
OnImageDrag();
}
//点击图片,图片居中放大显示,其余图片随机移动
public void OnButtonClick()
{
if (curImage.transform.localPosition == Vector3.zero)//如果图片已经在中心,就返回,不执行任何操作
{
return;
}
ClickImage1019_Panel._instance.MoveImage();//其它图片随机移动旋转
curImage.transform.DOLocalMove(Vector3.zero, 0.3f);//移动到中心
curImage.transform.DOLocalRotate(Vector3.zero, 0.3f);//旋转为0度
curImage.transform.DOScale(new Vector3(2.5f, 2.2f, 2), 0.3f);//放大为2
curImage.transform.SetAsLastSibling();//深度为最前
}
//拖动图片,图片翻转
public void OnImageDrag()
{
if (curImage.transform.localPosition == Vector3.zero)//如果图片在中心位置,就可以拖动翻转
{
if (isZ)//如果图片是正面 就翻为反面
{
Invoke("ShowBack", 0.35f);//0.35f后显示处反面图片(子图片);
ClickImage1019_Panel._instance.isF = true;
}
else//如果图片是反面,就翻为正面
{
Invoke("HideBack", 0.35f);//0.35f后隐藏反面图片(子图片)
ClickImage1019_Panel._instance.isF = false;
}
if (mouseUp.x> mouseDown.x)//如果向右滑动,图片向右翻转
{
curImage.transform.DOLocalRotate(new Vector3(0, -180, 0), 0.3f);//图片翻转-180动画,持续0.3f;
isZ = false;
}
else//如果向左滑动,图片向左翻转
{
curImage.transform.DOLocalRotate(new Vector3(0, 180, 0), 0.3f);//图片翻转180动画,持续0.3f;
isZ = false;
}
}
}
}
网友评论