基于angular的项目引入hammerjs手势操作。
1、首先下载npm install hammerjs
2、在main.ts引入import ‘hammerjs’;
3、在app.module.ts对手势进行配置;
import {
HammerGestureConfig, HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';
export class MyHammerConfig extends HammerGestureConfig {
overrides: any = {
// override hammerjs default configuration
'pan': {
threshold: 5},
'swipe': {
velocity: 0.4,
threshold: 20,
direction: 31
},
'press': {
}
};
}
@NgModule({
providers:[
{
provide: HAMMER_GESTURE_CONFIG,
useClass: MyHammerConfig
}
]
})
下面进入正题:我是把这个操作封装成指令了,引用的时候引入这个指令,然后在标签添加appDoubleGesture属性
import {
Directive, Input, ElementRef, Renderer2} from '@angular/core';
import {
DomController} from "@ionic/angular";
@Directive({
selector: '[appDoubleGesture]'
})
export class DoubleGestureDirective {
tMatrix:Array<number> = [1,0,0,1,0,0]; //x缩放,无,无,y缩放,x平移,y平移
initScale: number = 1;//初始化scale
el:any;
ticking:boolean = false;
poscenter:any;
duration:string='';//设置过渡效果,用于双击缩放效果
lastTranslate:any;
lastcenter:any;
center:any;
reqAnimationFrame:Function;
constructor(public element: ElementRef, public renderer: Renderer2, public domCtrl: DomController) {
}
ngAfterViewInit() {
let mc = new window['Hammer'](this.element.