用 cc.find 返回的节点初始化的鼠标监听怎样才能取消监听?

代码:

    onLoad: function () {
        cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
        cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
        cc.find("Canvas/background").on(cc.Node.EventType.MOUSE_MOVE, this.onMouseMove, this);
        cc.find("Canvas").on(cc.Node.EventType.MOUSE_UP, this.onMouseUp, this);
        cc.find("Canvas").on(cc.Node.EventType.MOUSE_DOWN, this.onMouseDown, this);
    },

    onDestroy () {
        cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
        cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
        //下面三个是错误的,会报错。
        cc.find("Canvas/background").off(cc.Node.EventType.MOUSE_MOVE, this.onMouseMove, this);
        cc.find("Canvas").off(cc.Node.EventType.MOUSE_UP, this.onMouseUp, this);
        cc.find("Canvas").off(cc.Node.EventType.MOUSE_DOWN, this.onMouseDown, this);
    },

报这些错误:
TypeError: cc.find(…) is null
object already destroyed
object already destroyed

    onLoad: function () {
        cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
        cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
        this.backgroundNode = cc.find("Canvas/background");
        this.backgroundNode.on(cc.Node.EventType.MOUSE_MOVE, this.onMouseMove, this);
        this.canvasNode = cc.find("Canvas");
        this.canvasNode.on(cc.Node.EventType.MOUSE_UP, this.onMouseUp, this);
        this.canvasNode.on(cc.Node.EventType.MOUSE_DOWN, this.onMouseDown, this);
    },

    onDestroy: function () {
        cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
        cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
        this.backgroundNode.off(cc.Node.EventType.MOUSE_MOVE, this.onMouseMove, this);
        this.canvasNode.off(cc.Node.EventType.MOUSE_UP, this.onMouseUp, this);
        this.canvasNode.off(cc.Node.EventType.MOUSE_DOWN, this.onMouseDown, this);
    },

这样不报错了,不过不知道对错。感觉之前报错是因为取消监听的时候 Canvas/background 已经被销毁了。我这楼用的方法就不会受销毁的影响吗?感谢这位亲的代码。在 GitHub 上搜“cc.find(“Canvas”).on off”搜到的,翻了几页就找到了。