common.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import * as THREE from '../lib/three.module.js'
  2. let common = {
  3. handelPadding: (function() {
  4. //去除player左边和上面的宽高,因为pc的player左上有其他element 许钟文
  5. var pads = new Map() //记录下来避免反复计算
  6. return function(x, y, domE) {
  7. let pad
  8. let padInfo = pads.get(domE)
  9. if (padInfo) {
  10. if (domE.clientWidth == padInfo.width && domE.clientHeight == padInfo.height) {
  11. pad = padInfo.pad
  12. }
  13. }
  14. if (!pad) {
  15. pad = {
  16. x: this.getOffset('left', domE),
  17. y: this.getOffset('top', domE)
  18. }
  19. pads.set(domE, {
  20. width: domE.clientWidth,
  21. height: domE.clientHeight,
  22. pad
  23. })
  24. }
  25. return {
  26. x: x - pad.x,
  27. y: y - pad.y
  28. }
  29. }
  30. })(),
  31. getOffset: function(type, element, parent) {
  32. //获取元素的边距 许钟文
  33. var offset = type == 'left' ? element.offsetLeft : element.offsetTop
  34. if (!parent) parent = document.body
  35. while ((element = element.offsetParent)) {
  36. if (element == parent) break
  37. offset += type == 'left' ? element.offsetLeft : element.offsetTop
  38. }
  39. return offset
  40. }
  41. }
  42. export default common