CocosCreator2.4把一个节点从Canvas挪到常驻会丢失事件

CocosCreator2.4.15版本中,我想做一个可以不管切换任何场景都挂载到Canvas中的组件,目前的做法是先把一个Node放到Canvas中,在切换场景之前把Canvas中的Node挪到addPersistRootNode中,在下一个场景再挪回来,现在的问题是当我从Canvas挪出来然后再放到Canvas中的时候节点中的点击事件就接受不到了,下面是一个能复现的代码
let tagNode = new cc.Node(“QGLayer”);

      tagNode.setPosition(0, 0);

      let texture = new cc.Texture2D();

      let spriteFrame = new cc.SpriteFrame();

      texture.initWithData(

        new Uint8Array([0, 0, 0]),

        cc.Texture2D.PixelFormat.RGB888,

        1,

        1,

        cc.size(100, 100)

      );

      spriteFrame.setTexture(texture);

      spriteFrame.setRect(cc.rect(0, 0, 100, 100));

      let iconParent = new cc.Node();

      iconParent.setPosition(100, 500);

      iconParent.setAnchorPoint(0, 0);

      iconParent.active = true;

      let rootNode = new cc.Node();

      rootNode.setPosition(0, 0);

      rootNode.setContentSize(100, 100);

      rootNode.setAnchorPoint(0, 0);

      iconParent.addChild(rootNode);

      let sp = rootNode.addComponent(cc.Sprite);

      sp.opacity = 120;

      sp.spriteFrame = spriteFrame;

      rootNode.active = true;

      rootNode.on(cc.Node.EventType.TOUCH_END, function (event) {

        console.log("****** >>touchRootNode");

        event.stopPropagation();

      }, null, true);

      tagNode.addChild(iconParent);

      cc.find("Canvas").addChild(tagNode);

      setTimeout(() => {

        // 从 Canvas 移除并设为常驻节点

        tagNode.active = false;

        tagNode.removeFromParent();

        cc.game.addPersistRootNode(tagNode);

        cc.director.loadScene("game2");

        setTimeout(() => {

          console.log("****** >>loadScene after scene switch");

          tagNode.removeFromParent();

          cc.find("Canvas").addChild(tagNode);

          tagNode.active = true;

        }, 1000);

      }, 1000);

    });

移除常驻节点要调用 removePersistRootNode