| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/game/component/TouchHelper.js';
- var __require = nodeEnv ? function (request) {
- return cc.require(request);
- } : function (request) {
- return __quick_compile_project__.require(request, __filename);
- };
- function __define (exports, require, module) {
- if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
- cc._RF.push(module, '207f5IvRwZGGbOudGF4bfk4', 'TouchHelper');
- // script/game/component/TouchHelper.ts
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.TouchHelper = void 0;
- // import { _decorator, Component, Vec2, SystemEventType, EventTouch, UITransform, EventHandler, Vec3, v3 } from 'cc';
- var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
- /**
- * @description 触摸辅助器,支持多边形区域点击检测,并且添加ceator不带有的tap事件
- * @author Soonsky
- */
- var TouchHelper = /** @class */ (function (_super) {
- __extends(TouchHelper, _super);
- function TouchHelper() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.canTouch = true;
- _this.onInPolygon = new cc.Component.EventHandler();
- _this.onOutPolygon = new cc.Component.EventHandler();
- _this.onTouchTap = new cc.Component.EventHandler();
- _this.needPolygon = false;
- _this.points = [];
- // @property({ tooltip: "点击在多边形区域内时是否阻止事件冒泡" }) stopPropagation = false;// 无效且报错
- _this.isMoved = false;
- return _this;
- }
- TouchHelper.prototype.start = function () {
- this.node.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
- this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.onTouchCancel, this);
- this.node.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
- };
- TouchHelper.prototype.onTouchEnd = function (e) {
- if (this.canTouch && this.needPolygon && this.points.length >= 3) {
- var touchPoint = e.getLocation();
- var localPoint = this.node.convertToNodeSpaceAR(new cc.Vec2(touchPoint.x, touchPoint.y));
- var result = this.pointInPoly(localPoint, this.points);
- if (!this.isMoved) {
- if (result) {
- // if (this.stopPropagation) {
- // e.propagationStopped = true;
- // }
- this.canTouch && this.onInPolygon && this.onInPolygon.emit([]);
- }
- else {
- this.canTouch && this.onOutPolygon && this.onOutPolygon.emit([]);
- }
- }
- }
- if (this.canTouch) {
- if (!this.isMoved) {
- this.canTouch && this.onTouchTap && this.onTouchTap.emit([]);
- }
- }
- this.isMoved = false;
- };
- TouchHelper.prototype.onTouchMove = function (e) {
- if (e.getTouches().length > 1) {
- this.isMoved = true;
- return;
- } // getAllTouches
- this.isMoved = cc.Vec2.distance(e.getStartLocation(), e.getLocation()) > 20;
- };
- TouchHelper.prototype.onTouchCancel = function (e) {
- this.isMoved = false;
- };
- TouchHelper.prototype.pointInPoly = function (point, polyPoints) {
- for (var c = false, i = -1, l = polyPoints.length, j = l - 1; ++i < l; j = i)
- ((polyPoints[i].y <= point.y && point.y < polyPoints[j].y) || (polyPoints[j].y <= point.y && point.y < polyPoints[i].y))
- && (point.x < (polyPoints[j].x - polyPoints[i].x) * (point.y - polyPoints[i].y) / (polyPoints[j].y - polyPoints[i].y) + polyPoints[i].x)
- && (c = !c);
- return c;
- };
- __decorate([
- property({ tooltip: "是否可以点击" })
- ], TouchHelper.prototype, "canTouch", void 0);
- __decorate([
- property({ tooltip: "在多边形范围内产生点击", type: cc.Component.EventHandler })
- ], TouchHelper.prototype, "onInPolygon", void 0);
- __decorate([
- property({ tooltip: "在多边形范围外产生点击", type: cc.Component.EventHandler })
- ], TouchHelper.prototype, "onOutPolygon", void 0);
- __decorate([
- property({ tooltip: "在节点范围内产生点击", type: cc.Component.EventHandler })
- ], TouchHelper.prototype, "onTouchTap", void 0);
- __decorate([
- property({ tooltip: "是否与需要多边形检查" })
- ], TouchHelper.prototype, "needPolygon", void 0);
- __decorate([
- property({ type: [cc.Vec2], tooltip: "多边形定点位置信息(局部坐标,至少3个点)" })
- ], TouchHelper.prototype, "points", void 0);
- TouchHelper = __decorate([
- ccclass //('TouchHelper')
- ], TouchHelper);
- return TouchHelper;
- }(cc.Component));
- exports.TouchHelper = TouchHelper;
- cc._RF.pop();
- }
- if (nodeEnv) {
- __define(__module.exports, __require, __module);
- }
- else {
- __quick_compile_project__.registerModuleFunc(__filename, function () {
- __define(__module.exports, __require, __module);
- });
- }
- })();
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxnYW1lXFxjb21wb25lbnRcXFRvdWNoSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxzSEFBc0g7QUFDaEgsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFDNUM7OztHQUdHO0FBRUg7SUFBaUMsK0JBQVk7SUFBN0M7UUFBQSxxRUFzREM7UUFyRG9DLGNBQVEsR0FBWSxJQUFJLENBQUM7UUFDYSxpQkFBVyxHQUE4QixJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekUsa0JBQVksR0FBOEIsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNFLGdCQUFVLEdBQThCLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6RyxpQkFBVyxHQUFZLEtBQUssQ0FBQztRQUNELFlBQU0sR0FBbUIsRUFBRSxDQUFDO1FBQzdGLGdGQUFnRjtRQUV4RSxhQUFPLEdBQUcsS0FBSyxDQUFDOztJQTZDNUIsQ0FBQztJQTVDRywyQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVB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QUFTLEdBc0Q1QztBQXREWSxrQ0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBpbXBvcnQgeyBfZGVjb3JhdG9yLCBDb21wb25lbnQsIFZlYzIsIFN5c3RlbUV2ZW50VHlwZSwgRXZlbnRUb3VjaCwgVUlUcmFuc2Zvcm0sIEV2ZW50SGFuZGxlciwgVmVjMywgdjMgfSBmcm9tICdjYyc7XHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24g6Kem5pG46L6F5Yqp5Zmo77yM5pSv5oyB5aSa6L655b2i5Yy65Z+f54K55Ye75qOA5rWL77yM5bm25LiU5re75YqgY2VhdG9y5LiN5bim5pyJ55qEdGFw5LqL5Lu2XHJcbiAqIEBhdXRob3IgU29vbnNreVxyXG4gKi9cclxuQGNjY2xhc3MvLygnVG91Y2hIZWxwZXInKVxyXG5leHBvcnQgY2xhc3MgVG91Y2hIZWxwZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KHsgdG9vbHRpcDogXCLmmK/lkKblj6/ku6Xngrnlh7tcIiB9KSBjYW5Ub3VjaDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBAcHJvcGVydHkoeyB0b29sdGlwOiBcIuWcqOWkmui+ueW9ouiMg+WbtOWGheS6p+eUn+eCueWHu1wiLCB0eXBlOiBjYy5Db21wb25lbnQuRXZlbnRIYW5kbGVyIH0pIG9uSW5Qb2x5Z29uOiBjYy5Db21wb25lbnQuRXZlbnRIYW5kbGVyID0gbmV3IGNjLkNvbXBvbmVudC5FdmVudEhhbmRsZXIoKTtcclxuICAgIEBwcm9wZXJ0eSh7IHRvb2x0aXA6IFwi5Zyo5aSa6L655b2i6IyD5Zu05aSW5Lqn55Sf54K55Ye7XCIsIHR5cGU6IGNjLkNvbXBvbmVudC5FdmVudEhhbmRsZXIgfSkgb25PdXRQb2x5Z29uOiBjYy5Db21wb25lbnQuRXZlbnRIYW5kbGVyID0gbmV3IGNjLkNvbXBvbmVudC5FdmVudEhhbmRsZXIoKTtcclxuICAgIEBwcm9wZXJ0eSh7IHRvb2x0aXA6IFwi5Zyo6IqC54K56IyD5Zu05YaF5Lqn55Sf54K55Ye7XCIsIHR5cGU6IGNjLkNvbXBvbmVudC5FdmVudEhhbmRsZXIgfSkgb25Ub3VjaFRhcDogY2MuQ29tcG9uZW50LkV2ZW50SGFuZGxlciA9IG5ldyBjYy5Db21wb25lbnQuRXZlbnRIYW5kbGVyKCk7XHJcbiAgICBAcHJvcGVydHkoeyB0b29sdGlwOiBcIuaYr+WQpuS4jumcgOimgeWkmui+ueW9ouajgOafpVwiIH0pIG5lZWRQb2x5Z29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuVmVjMl0sIHRvb2x0aXA6IFwi5aSa6L655b2i5a6a54K55L2N572u5L+h5oGv77yI5bGA6YOo5Z2Q5qCH77yM6Iez5bCRM+S4queCue+8iVwiIH0pIHBvaW50czogQXJyYXk8Y2MuVmVjMj4gPSBbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7IHRvb2x0aXA6IFwi54K55Ye75Zyo5aSa6L655b2i5Yy65Z+f5YaF5pe25piv5ZCm6Zi75q2i5LqL5Lu25YaS5rOhXCIgfSkgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7Ly8g5peg5pWI5LiU5oql6ZSZXHJcblxyXG4gICAgcHJpdmF0ZSBpc01vdmVkID0gZmFsc2U7XHJcbiAgICBzdGFydCgpIHtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCB0aGlzLm9uVG91Y2hFbmQsIHRoaXMpO1xyXG4gICAgICAgIHRoaXMubm9kZS5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9DQU5DRUwsIHRoaXMub25Ub3VjaENhbmNlbCwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMub25Ub3VjaE1vdmUsIHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25Ub3VjaEVuZChlOiBjYy5Ub3VjaCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNhblRvdWNoICYmIHRoaXMubmVlZFBvbHlnb24gJiYgdGhpcy5wb2ludHMubGVuZ3RoID49IDMpIHtcclxuICAgICAgICAgICAgbGV0IHRvdWNoUG9pbnQgPSBlLmdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxldCBsb2NhbFBvaW50ID0gdGhpcy5ub2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKG5ldyBjYy5WZWMyKHRvdWNoUG9pbnQueCwgdG91Y2hQb2ludC55KSk7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBvaW50SW5Qb2x5KGxvY2FsUG9pbnQsIHRoaXMucG9pbnRzKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTW92ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5zdG9wUHJvcGFnYXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgZS5wcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhblRvdWNoICYmIHRoaXMub25JblBvbHlnb24gJiYgdGhpcy5vbkluUG9seWdvbi5lbWl0KFtdKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5Ub3VjaCAmJiB0aGlzLm9uT3V0UG9seWdvbiAmJiB0aGlzLm9uT3V0UG9seWdvbi5lbWl0KFtdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jYW5Ub3VjaCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5Ub3VjaCAmJiB0aGlzLm9uVG91Y2hUYXAgJiYgdGhpcy5vblRvdWNoVGFwLmVtaXQoW10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNNb3ZlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBvblRvdWNoTW92ZShlOiBjYy5FdmVudC5FdmVudFRvdWNoKSB7XHJcbiAgICAgICAgaWYgKGUuZ2V0VG91Y2hlcygpLmxlbmd0aCA+IDEpIHsgdGhpcy5pc01vdmVkID0gdHJ1ZTsgcmV0dXJuIH0vLyBnZXRBbGxUb3VjaGVzXHJcbiAgICAgICAgdGhpcy5pc01vdmVkID0gY2MuVmVjMi5kaXN0YW5jZShlLmdldFN0YXJ0TG9jYXRpb24oKSwgZS5nZXRMb2NhdGlvbigpKSA+IDIwO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBvblRvdWNoQ2FuY2VsKGU6IGNjLkV2ZW50LkV2ZW50VG91Y2gpIHtcclxuICAgICAgICB0aGlzLmlzTW92ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHBvaW50SW5Qb2x5KHBvaW50OiBjYy5WZWMyIHwgY2MuVmVjMywgcG9seVBvaW50czogY2MuVmVjMltdKSB7XHJcbiAgICAgICAgZm9yICh2YXIgYyA9IGZhbHNlLCBpID0gLTEsIGwgPSBwb2x5UG9pbnRzLmxlbmd0aCwgaiA9IGwgLSAxOyArK2kgPCBsOyBqID0gaSlcclxuICAgICAgICAgICAgKChwb2x5UG9pbnRzW2ldLnkgPD0gcG9pbnQueSAmJiBwb2ludC55IDwgcG9seVBvaW50c1tqXS55KSB8fCAocG9seVBvaW50c1tqXS55IDw9IHBvaW50LnkgJiYgcG9pbnQueSA8IHBvbHlQb2ludHNbaV0ueSkpXHJcbiAgICAgICAgICAgICAgICAmJiAocG9pbnQueCA8IChwb2x5UG9pbnRzW2pdLnggLSBwb2x5UG9pbnRzW2ldLngpICogKHBvaW50LnkgLSBwb2x5UG9pbnRzW2ldLnkpIC8gKHBvbHlQb2ludHNbal0ueSAtIHBvbHlQb2ludHNbaV0ueSkgKyBwb2x5UG9pbnRzW2ldLngpXHJcbiAgICAgICAgICAgICAgICAmJiAoYyA9ICFjKTtcclxuICAgICAgICByZXR1cm4gYztcclxuICAgIH1cclxufVxyXG5cclxuIl19
|