123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import ScrollOut from "./ScrollOut";
- const { ccclass, property, menu } = cc._decorator;
- @ccclass
- @menu('Scroll/ScrollInner')
- export default class ScrollInner extends cc.ScrollView {
- scrollOutView: ScrollOut
- canScroll: boolean = true
- setOuterScrollView(outer) {
- this.scrollOutView = outer;
- }
- //#region 重写cc.ScrollView的方法
- _onTouchMoved(event, captureListeners) {
- if (!this.enabledInHierarchy) return;
- if (this._hasNestedViewGroup(event, captureListeners)) return;
- var touch = event.touch;
- var deltaMove = touch.getLocation().sub(touch.getStartLocation());
- if (this.content) {
- if (this.canScroll) {
- this["_handleMoveLogic"](touch);
- }
- }
- if (!this.cancelInnerEvents) {
- return;
- }
- if (deltaMove.mag() > 7) {
- if (!this["_touchMoved"] && event.target !== this.node) {
- var cancelEvent = new cc.Event.EventTouch(event.getTouches(), event.bubbles);
- cancelEvent.type = cc.Node.EventType.TOUCH_CANCEL;
- cancelEvent.touch = event.touch;
- cancelEvent["simulate"] = true;
- event.target.dispatchEvent(cancelEvent);
- this["_touchMoved"] = true;
- }
- }
- this["_stopPropagationIfTargetIsMe"](event);
- }
- //#region 重写cc.ScrollView的方法
- _hasNestedViewGroup(event, captureListeners) {
- if (event.eventPhase !== cc.Event.CAPTURING_PHASE) return;
- //不阻止out上onTouch事件执行。
- return false;
- }
- //#endregion
- }
|