|
@@ -10,18 +10,23 @@ export default class ConvertViews {
|
|
|
}
|
|
|
|
|
|
|
|
|
- clear(){
|
|
|
+ clear(o={}){
|
|
|
this.loaded = false;
|
|
|
- this.targetApp = this.sourceApp = null;
|
|
|
+ this.sourceApp = null;
|
|
|
+ if(!o.dontClearTarget){
|
|
|
+ this.targetApp = null
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- init(sourceApp, targetApp, dom2, sceneType, cameraData, sourcePano) {
|
|
|
+ init(sourceApp, targetApp, sourceDom, sceneType, cameraData, sourcePano) {
|
|
|
//if (!this.player1.model.panos.list.length || !this.player2.model.panos.list.length) return
|
|
|
|
|
|
if(this.loaded || !targetApp ) return
|
|
|
-
|
|
|
+ let needBindEvent = !this.targetApp // 若targetApp存在表明targetApp的dom未换掉,事件还存在
|
|
|
this.sourceApp = sourceApp
|
|
|
this.targetApp = targetApp
|
|
|
+ this.sourceDom = sourceDom
|
|
|
let viewer = this.viewer = targetApp.viewer
|
|
|
|
|
|
this.needConvertAxis = sceneType == '4dkk'
|
|
@@ -57,64 +62,57 @@ export default class ConvertViews {
|
|
|
) */
|
|
|
this.loaded = true
|
|
|
this.receive(cameraData)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- {//传递到另一边的dom
|
|
|
- let getEvent = (type, e)=>{
|
|
|
- return new MouseEvent(type, {
|
|
|
- bubbles: false,//?
|
|
|
- cancelable: true,
|
|
|
- view: this.sourceApp,
|
|
|
- clientX: e.clientX, clientY: e.clientY,
|
|
|
- button: e.button, buttons: e.buttons, which: e.which,
|
|
|
- altKey: e.altKey, ctrlKey: e.ctrlKey, shiftKey:e.shiftKey, metaKey: e.metaKey,
|
|
|
- detail:e.detail,
|
|
|
- //target : dom2
|
|
|
- });
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- this.lockCamera(true)
|
|
|
- let dom1 = viewer.getDomElement()
|
|
|
- dom1.addEventListener('mousedown',(e)=>{
|
|
|
- let event = getEvent('mousedown', e)
|
|
|
- dom2.dispatchEvent(event)
|
|
|
- })
|
|
|
- dom1.addEventListener('mousemove',(e)=>{
|
|
|
- let event = getEvent('mousemove', e)
|
|
|
- dom2.dispatchEvent(event)
|
|
|
- })
|
|
|
- dom1.addEventListener('mouseup',(e)=>{
|
|
|
- let event = getEvent('mouseup', e)
|
|
|
- sourceApp.dispatchEvent(event) //mouseup 在laser中加在window上的
|
|
|
- })
|
|
|
- dom1.addEventListener('mousewheel',(e)=>{
|
|
|
- let event = getEvent('mousewheel', e)
|
|
|
- event.wheelDelta = e.wheelDelta //wheelDelta没法在getEvent参数中赋值
|
|
|
- dom2.dispatchEvent(event)
|
|
|
- })
|
|
|
- let stop = (e)=>{
|
|
|
- /* var event = document.createEvent('MouseEvents');
|
|
|
- event.initMouseEvent('mouseup', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
|
|
- dom2.dispatchEvent(event) */
|
|
|
- let event = getEvent('mouseup', e)
|
|
|
- dom2.dispatchEvent(event)
|
|
|
- }
|
|
|
- dom1.addEventListener('mouseout',stop)
|
|
|
- dom1.addEventListener('mouseover',stop)
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ needBindEvent && this.bindCamEvent()
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
+ bindCamEvent(){//传递到另一边的dom
|
|
|
+ this.lockCamera(true)
|
|
|
+
|
|
|
+ let getEvent = (type, e)=>{
|
|
|
+ return new MouseEvent(type, {
|
|
|
+ bubbles: false,//?
|
|
|
+ cancelable: true,
|
|
|
+ view: this.sourceApp,
|
|
|
+ clientX: e.clientX, clientY: e.clientY,
|
|
|
+ button: e.button, buttons: e.buttons, which: e.which,
|
|
|
+ altKey: e.altKey, ctrlKey: e.ctrlKey, shiftKey:e.shiftKey, metaKey: e.metaKey,
|
|
|
+ detail:e.detail,
|
|
|
+ //target : dom2
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ let dom1 = this.viewer.getDomElement()
|
|
|
+ dom1.addEventListener('mousedown',(e)=>{
|
|
|
+ let event = getEvent('mousedown', e)
|
|
|
+ this.sourceDom.dispatchEvent(event)
|
|
|
+ })
|
|
|
+ dom1.addEventListener('mousemove',(e)=>{
|
|
|
+ let event = getEvent('mousemove', e)
|
|
|
+ this.sourceDom.dispatchEvent(event)
|
|
|
+ })
|
|
|
+ dom1.addEventListener('mouseup',(e)=>{
|
|
|
+ let event = getEvent('mouseup', e)
|
|
|
+ this.sourceApp.dispatchEvent(event) //mouseup 在laser中加在window上的
|
|
|
+ })
|
|
|
+ dom1.addEventListener('mousewheel',(e)=>{
|
|
|
+ let event = getEvent('mousewheel', e)
|
|
|
+ event.wheelDelta = e.wheelDelta //wheelDelta没法在getEvent参数中赋值
|
|
|
+ this.sourceDom.dispatchEvent(event)
|
|
|
+ })
|
|
|
+ let stop = (e)=>{ //drag到另一边时停止旋转, 防止转到另一边
|
|
|
+ let event = getEvent('mouseup', e)
|
|
|
+ this.sourceApp.dispatchEvent(event)
|
|
|
+ }
|
|
|
+ dom1.addEventListener('mouseout',stop)
|
|
|
+ dom1.addEventListener('mouseover',stop)
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
receive(data){
|
|
|
|