BoxManager.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import * as THREE from "three";
  2. import HorizontalBox from "./horizontalBox";
  3. export default class BoxManager {
  4. constructor(scene) {
  5. this.scene = scene
  6. this.loadingManager = new THREE.LoadingManager()
  7. this.loader = new THREE.TextureLoader( this.loadingManager )
  8. this.model = new THREE.Group()
  9. this.maps = {}
  10. this.imgList = []
  11. this.opacity = 1
  12. this.onbindEvent()
  13. }
  14. load = (list) => {
  15. list.forEach((item, index) => {
  16. if( Array.isArray(item)) { //横排
  17. const box = new HorizontalBox(this, item, index)
  18. this.model.add(box)
  19. } else {//竖排
  20. }
  21. });
  22. this.scene.scene.add(this.model)
  23. }
  24. onbindEvent = () => {
  25. const _this = this
  26. this.loadingManager.onStart = function(url, itemsLoaded, itemsTotal) {
  27. // console.log( 'Started loading file: ' + url + '.\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.' );
  28. console.log('loading_manager: loading...')
  29. }
  30. this.loadingManager.onLoad = function() {
  31. console.log('loading_manager: loading complete!');
  32. }
  33. this.loadingManager.onProgress = function(url, itemsLoaded, itemsTotal) {
  34. // console.log( 'Loading file: ' + url + '.\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.' );
  35. }
  36. this.loadingManager.onError = function(url) {
  37. console.error( 'loading_manager: error loading ' + url );
  38. }
  39. }
  40. setVisible = (val) => {
  41. if(!this.model) return
  42. this.model.visible = val
  43. }
  44. setOpacity = (val) => {
  45. this.material.opacity = val
  46. }
  47. }