zoukankan      html  css  js  c++  java
  • NGUI混合FingerGesture《卷一》 统一坐标

    问题背景

    使用FingerGesture 获取触碰点2D坐标, 将该2D坐标赋值给NGUI元素,发现位置出现偏差。

    排查思路

    1:NGUI的 (0,0,0)默认位置是在屏幕正中心。而FingerGesture(0,0,0)默认位置是在屏幕的左下角

    2:NGUI采用了基于高度的缩放机制,各个分辨率被模拟成一个经过ManualHeight运算之后的结果。  FingerGesture触碰点2D坐标是符合屏幕的分辨率的。

    解决之道

    1:将GingerGesture触碰的坐标(基于左下角),换算成NGUI的坐标体系(基于屏幕正中心)

    2:将换算之后的坐标,乘以当前屏幕和ManualHeight的缩放值。

    解决代码

    1) 初始化参数

      private float _screenHalfWidth;
        private float _screenHalfHeight;
        private float _scaleFactor;
    
    
    //在类的构造函数里面初始化参数
    //SCREEN_NORMAL_HEIGHT的意思见上图,本例使用720高度
       _scaleFactor = GlobalDataHelper.SCREEN_NORMAL_HEIGHT / Screen.height;
            _screenHalfWidth = Screen.width * 0.5f;
            _screenHalfHeight = Screen.height * 0.5f;

    2)调用,point是FingerGesture的OnGesture事件的参数 e.Position

      Vector3 newPos = new Vector3(point.x - _screenHalfWidth, point.y - _screenHalfHeight) *_scaleFactor;
            transform.localPosition = newPos;
  • 相关阅读:
    c++之模板
    javascript 学习 四 函数参数
    javascript 学习三 语句
    jsvascript 学习 二 操作符
    javascript 学习一
    Highcharts areaspline 图表 动态更新数据
    js 数据类型的初步理解
    angular ng-class 三种方法
    angular 与 highcharts 结合使用
    angular 单选按钮之间的默认选中问题
  • 原文地址:https://www.cnblogs.com/kimmy/p/3765649.html
Copyright © 2011-2022 走看看