UNPKG

@senspark/ee

Version:

utility library for cocos creator

85 lines (84 loc) 3.67 kB
"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 (b.hasOwnProperty(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 }); var _a = cc._decorator, ccclass = _a.ccclass, disallowMultiple = _a.disallowMultiple, property = _a.property; var ConditionTouchListener = /** @class */ (function (_super) { __extends(ConditionTouchListener, _super); function ConditionTouchListener() { var _this = _super.call(this) || this; // Default behavior. _this.conditionCallback = function (listener, touch) { var position = touch.getLocation(); var node = listener.owner; return node._hitTest(position, listener); }; return _this; } ConditionTouchListener.prototype.updateTouchEvent = function () { var listener = this.node._touchListener; if (listener !== null) { this.modifyTouchBegan(listener); this.modifyTouchEnd(listener); } }; ConditionTouchListener.prototype.modifyTouchBegan = function (listener) { var callback = this.conditionCallback; listener.onTouchBegan = function (touch, event) { if (callback(this, touch)) { event.type = cc.Node.EventType.TOUCH_START; event.touch = touch; event.bubbles = true; this.owner.dispatchEvent(event); return true; } return false; }; }; ConditionTouchListener.prototype.modifyTouchEnd = function (listener) { var callback = this.conditionCallback; listener.onTouchEnded = function (touch, event) { if (callback(this, touch)) { event.type = cc.Node.EventType.TOUCH_END; } else { event.type = cc.Node.EventType.TOUCH_CANCEL; } event.touch = touch; event.bubbles = true; this.owner.dispatchEvent(event); }; }; ConditionTouchListener.prototype.update = function (delta) { this.updateTouchEvent(); }; /** Sets the condition callback used in touch start event. */ ConditionTouchListener.prototype.setConditionCallback = function (callback) { this.conditionCallback = callback; this.updateTouchEvent(); return this; }; ConditionTouchListener = __decorate([ ccclass, disallowMultiple ], ConditionTouchListener); return ConditionTouchListener; }(cc.Component)); exports.ConditionTouchListener = ConditionTouchListener;