Skip to content
This repository has been archived by the owner on Jul 25, 2024. It is now read-only.

Commit

Permalink
change the implement of freeze-vertical
Browse files Browse the repository at this point in the history
  • Loading branch information
chenshu committed Mar 4, 2017
1 parent 00e239a commit a1b0999
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 47 deletions.
2 changes: 1 addition & 1 deletion dist/vue-krpano.common.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/vue-krpano.esm.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vue-krpano",
"version": "1.4.0",
"version": "1.4.1",
"description": "",
"main": "dist/vue-krpano.common.js",
"scripts": {
Expand Down
111 changes: 67 additions & 44 deletions src/features/freezeVertical.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,64 +3,87 @@
*/
"use strict";

function touchstart(e) {

let touch = e.changedTouches[0];
this.touchOrigin = {
x: touch.clientX,
y: touch.clientY
};
}

function touchmove(e) {

e.stopPropagation();

let touch = e.changedTouches[0];
let current = {
x: touch.clientX,
y: touch.clientY
};
let deltaX = this.touchOrigin.x - current.x;
let deltaY = this.touchOrigin.y - current.y;
window.scrollBy(0, deltaY);

let vlookat = this.get("view.vlookat");
let hlookat = this.get("view.hlookat") + deltaX;
this.call(`lookat(${hlookat},${vlookat})`);

this.touchOrigin = current;

}

let config = {
props: {
freezeVertical: {
type: Boolean,
default: false
}
},
methods: {
setVerticalFreeze(freeze){
if (freeze) {
this.krpanoObj.addEventListener("touchstart", touchstart, true);
this.krpanoObj.addEventListener("touchmove", touchmove, true);
this.log("vertical freeze");
} else {
this.krpanoObj.removeEventListener("touchstart", touchstart, true);
this.krpanoObj.removeEventListener("touchmove", touchmove, true);
this.log("vertical release");
}
data(){
return {
eventDelegate: undefined
}
},
methods: {},
watch: {
freezeVertical(val){
this.setVerticalFreeze(val)
if (this.eventDelegate) {
if (val) {
this.eventDelegate.style.display = "block";
let hlookat = this.krpanoObj.get("view.hlookat");
this.krpanoObj.call(`lookat(${hlookat},0)`);
} else {
this.eventDelegate.style.display = "none";
}
}
}
},
created(){
this.$on("panoCreated", () => {
this.setVerticalFreeze(this.freezeVertical);
this.$on("panoCreated", krpano => {

let origin = krpano.firstChild;

let eventDelegate = document.createElement("DIV");
eventDelegate.className = "event-delegate";
Object.assign(eventDelegate.style, {
display: this.freezeVertical ? "block" : "none",
width: "100%",
height: "100%",
position: "absolute",
"user-select": "none",
"z-index": 1
});
krpano.appendChild(eventDelegate);
this.eventDelegate = eventDelegate;

let originTouch;

eventDelegate.addEventListener("touchstart", function (e) {
originTouch = e;
Object.defineProperty(e, "cancelable", {value: true});
let event = new TouchEvent("touchstart", e);
return origin.dispatchEvent(event);
});

eventDelegate.addEventListener("touchend", function (e) {
Object.defineProperty(e, "cancelable", {value: true});
let event = new TouchEvent("touchend", e);
return origin.dispatchEvent(event);
});

eventDelegate.addEventListener("touchmove", function (e) {

let currentTouch = e.changedTouches[0];
let deltaX = originTouch.clientX - currentTouch.clientX;
let hlookat = krpano.get("view.hlookat") + deltaX;
let vlookat = krpano.get("view.vlookat");
krpano.call(`lookat(${hlookat},${vlookat})`);

originTouch = currentTouch;

return true;
});

eventDelegate.addEventListener("mousedown", function (e) {
Object.defineProperty(e, "cancelable", {value: true});
return origin.dispatchEvent(new MouseEvent("mousedown", e));
});

eventDelegate.addEventListener("mousewheel", function (e) {
Object.defineProperty(e, "cancelable", {value: true});
return origin.dispatchEvent(new MouseEvent("mousewheel", e));
});
});
}
};
Expand Down

0 comments on commit a1b0999

Please sign in to comment.