网址:https://github.com/anvaka/three.map.control

在threejs群里发现的一个很有意思的问题之前没有接触过:

存在的问题:

 我在微信小游戏中,用orbit也会出现计算错误的情况,动一下就不见了。 
解决办法

 发现了, 原来是小游戏里面获取不到 element.clientWidth, 要替换成 window.innerWidth 

three.map.control

Mobile friendly three.js camera that mimics 2d maps navigation with pan and zoom.

DEMO

Features

  • Touch friendly. Drag scene around with single finger touch, or zoom it with standard pinch gesture.

  • Zoom into point. Use your mouse wheel to zoom into particular point on the scene.
  • Easing. When you pan around, the movement does not stop immediately. Smooth kinetic panning gives natural feel to it.

  • Tiny. It's less than 400 lines of documented code.

usage

// let's say you have a standard THREE.js PerspectiveCamera:
var camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 3000 ); // To turn on a map-like navigation:
var createPanZoom = require('three.map.control'); // We assume that three.js scene is hosted inside DOM element `container`
var panZoom = createPanZoom(camera, container); // That's it. panZoom wil now listen to events from `container`. You can pan and
// zoom with your mouse or fingers (on touch device) // If you want to dispose three.js scene, make sure to call:
panZoom.dispose();

events

// the panZoom api fires events when something happens,
// so that you can react to user actions:
panZoom.on('panstart', function() {
// fired when users begins panning (dragging) the surface
console.log('panstart fired');
}); panZoom.on('panend', function() {
// fired when user stpos panning (dragging) the surface
console.log('panend fired');
}); panZoom.on('beforepan', function(panPayload) {
// fired when camera position will be changed.
console.log('going to move camera.position.x by: ' + panPayload.dx);
console.log('going to move camera.position.y by: ' + panPayload.dy);
}); panZoom.on('beforezoom', function(panPayload) {
// fired when befor zoom in/zoom out
console.log('going to move camera.position.x by: ' + panPayload.dx);
console.log('going to move camera.position.y by: ' + panPayload.dy);
console.log('going to move camera.position.z by: ' + panPayload.dz);
});

license

MIT

最新文章

  1. lydsy 2600(二分+中位数前缀和)米仓
  2. AngularJS过滤器
  3. JavaScript,DOM经典基础面试题
  4. JavaScript DES 加密tripledes.js:
  5. iOS之05-三大特性之封装
  6. 转载:CSS计数器的趣味时光之css计算数据
  7. Python::OS 模块 -- 文件和目录操作
  8. Asp.net Session 保存到MySql中
  9. LINQ SQL分组取最近一条记录
  10. Object学习笔记
  11. jquery实现页面局部刷新
  12. JavaScript高级---桥模式设计
  13. HDU 5477 A Sweet Journey 水题
  14. iOS 选择框 单选框
  15. SimpleXML系列函数操作XML
  16. GO语言.树莓派.环境安装和测试
  17. JToken和BsonValue对象的相互转换
  18. 微信小程序调用高德地图
  19. Ubuntu 14.04 安装 sysrepo v0.7.5
  20. 使用shell命令给文件中每一行的前面、后面添加字符

热门文章

  1. [CI]CodeIgniter快速开发指南
  2. Structs复习 访问web元素
  3. eval解析字符串为JSON对象
  4. android开源项目框架大全:
  5. 只需两步获取任何微信小程序源码
  6. jquery 页面传值 汉字
  7. Spring 7种事务传播行为
  8. 三、Template 模板模式
  9. nginx配置 解决ajax请求跨域问题
  10. 【Django】关于使用阿里的iconfont