轉自:https://blog.csdn.net/foupwang/article/details/80474072
Cocos Creator的 cc.Node 有一套完整的事件監聽和分發機制。在這套機制之上,引擎提供了一些基礎的節點相關的系統事件。
Cocos Creator支持的系統事件包含鼠標、觸摸、鍵盤、重力傳感等四種,其中鼠標和觸摸事件是被直接觸發在相關節點上的,所以稱為節點系統事件。與之對應的,鍵盤和重力傳感事件被稱為全局系統事件。
本文主要講述如何處理節點系統中的鼠標事件。過程非常簡單,只要注冊該事件類型,並編寫相應的處理函數即可,如下:
在 node 節點的 onLoad 中注冊鼠標事件響應onLoad () {
this.node.on(cc.Node.EventType.MOUSE_DOWN, this.onMouseDown, this);
this.node.on(cc.Node.EventType.MOUSE_UP, this.onMouseUp, this
);
this.node.on(cc.Node.EventType.MOUSE_WHEEL, this.onMouseWheel, this);
},
在 node 節點的 onDestroy 中注銷鼠標事件響應onDestroy () {
this.node.off(cc.Node.EventType.MOUSE_DOWN, this.onMouseDown, this);
this.node.off(cc.Node.EventType.MOUSE_UP, this.onMouseUp, this);
this.node.off(cc.Node.EventType.MOUSE_WHEEL, this.onMouseWheel, this);
},
處理鼠標按下事件
onMouseDown: function(event) { let mouseType = event.getButton(); if (mouseType === cc.Event.EventMouse.BUTTON_LEFT) { // 鼠標左鍵按下 let mousePoint = event.getLocation(); let localPoint = this.node.convertToNodeSpace(mousePoint); ... } else if (mouseType === cc.Event.EventMouse.BUTTON_MIDDLE) { // 鼠標中鍵按下 ... } else if (mouseType === cc.Event.EventMouse.BUTTON_RIGHT) { // 鼠標右鍵按下 ... } },
處理鼠標釋放事件
onMouseUp: function(event) { let mouseType = event.getButton(); if (mouseType === cc.Event.EventMouse.BUTTON_LEFT) { // 鼠標左鍵釋放 let mousePoint = event.getLocation(); let localPoint = this.node.convertToNodeSpace(mousePoint); ... } else if (mouseType === cc.Event.EventMouse.BUTTON_MIDDLE) { // 鼠標中鍵釋放 ... } else if (mouseType === cc.Event.EventMouse.BUTTON_RIGHT) { // 鼠標右鍵釋放 ... } },
處理鼠標滾輪事件
onMouseWheel: function(event) { let scrollY = event.getScrollY(); ... },
