当点击指定区域图片(精灵)进行旋转
来源:互联网 发布:同声传译软件 知乎 编辑:程序博客网 时间:2024/05/16 00:50
var offset = _this.__eventOffset;var rotateDiv = _this.m_viewElement.querySelector('.actor-rotate');//统一坐标系//var _center = object.parent.clientPosToView(object.m_position.x,object.m_position.y, _this.m_scene.getCurrentScale());var _pre = object.parent.clientPosToView(_this._preX, _this._preY, _this.m_scene.getCurrentScale());var _oevnet = object.parent.clientPosToView(event.clientX, event.clientY, _this.m_scene.getCurrentScale());// object.m_position.x的坐标本身就是世界坐标下的var _centerX = object.m_position.x;//锚点var _centerY = object.m_position.y;var _preX = _pre.x;//原来的坐标var _preY = _pre.y;var _oeventX = _oevnet.x; //鼠标现在的坐标var _oeventY =_oevnet.y;var _predegA = Math.atan((_preY - _centerY)/(_preX - _centerX));//原来与水平线的夹角弧度 var _degA = Math.atan((_oeventY - _centerY)/(_oeventX - _centerX));//现在与水平线的夹角弧度 var _vectorab = (_oeventX-_centerX)*(_preX-_centerX) + (_oeventY-_centerY)*(_preY-_centerY);//向量相乘 var _a = Math.sqrt(Math.pow((_oeventX-_centerX),2) + Math.pow((_oeventY-_centerY),2));//向量的模 var _b = Math.sqrt(Math.pow((_preX-_centerX),2) + Math.pow((_preY-_centerY),2));//向量的模 var _cosa; if(_a*_b == 0){ _cosa = 1; }else{ _cosa = _vectorab/(_a*_b); } if(_cosa>1){ _cosa = 1; } var _deg = Math.acos(_cosa)*4/ Math.PI; if(_degA<_predegA) { _deg = -_deg; } var rotation = object.m_rotation; rotation += 180/Math.PI * _deg; //取整 rotation = Math.round(rotation); //0 - 360取值之间 if (rotation <0) { rotation = 360; }else{ rotation = rotation%360; rotation = Math.abs(rotation); } //记录下上一点坐标_this._preX = event.clientX;_this._preY = event.clientY;var wraper = gameEditor.GetWraper(object.m_id);var component = wraper.getComponentByType('Transform');eventCenter.raise('NOTIFY_PROPERTY_CHANGE', { "wraperId": _this.m_currentId, "componentId": component.id, "propertyKey": 'transform', "value": { Position: { x: object.m_position.x, y: object.m_position.y, z: object.m_position.z }, Scale: { x: object.m_scale.x, y: object.m_scale.y }, Rotation: { x: rotation, y: 0 } } });其实也没有什么东西就是一个鼠标移动算两点之间角度的算法。在实际应用中一定要注意坐标系的统一。
0 0
- 当点击指定区域图片(精灵)进行旋转
- 点击精灵区域消除,点击其他区域创建新精灵。(模拟放置炸弹,及引爆)
- D3D 中LPD3DXSPRITE(点精灵)对图片进行缩放旋转透明处理
- 点击打印指定区域
- Android DIY之路 (一) 指定区域多图片合成 放大 缩小 镜像 旋转 等
- IOS指定图片可变区域(slicing)
- 指定区域显示图片
- 图片点击之区域点击
- cocos2d 角度转换 (精灵图片如何指向点击位置)
- 增加图片的点击区域
- 安卓中使图片进行旋转(资源整理)
- 截图图片中的指定区域
- 拉伸图片的指定区域
- cocos2dx 3.0之判断点击精灵透明区域
- 图片旋转之一-点击“向左”“向右”旋转
- UITableView指定Cell的点击区域
- 点击实现图片旋转缩放
- java图片旋转指定角度
- scala关键字
- 算法:Reverse Bits
- javascript原型&闭包
- hdu 2426 Interesting Housing Problem【KM】
- 欢迎使用CSDN-markdown编辑器
- 当点击指定区域图片(精灵)进行旋转
- poj 2187 Beauty Contest
- 文本相似(汉明距离)
- 20. Valid Parentheses
- 重启后只出现光标闪烁的解决办法
- 双网卡 如何实现绑定(IP可变)
- linux ftp 命令详解和自动上传脚本实现
- 一个SDL2.0程序的分析
- sonarQube代码质量管理笔记