cocos creator怎么改变鼠标指针图

我没弄过,但是猜想可以这么搞,注册鼠标移动事件,检测是否在屏幕中,弄一个节点跟随坐标,切换状态
http://docs.cocos.com/creator/api/zh/classes/Event.EventMouse.html

鼠标事件进入某些节点的时候,移动会停止 我的 sp节点就不会跟随移动了

我测试没问题,用整个屏幕来做鼠标响应

哥们 能把代码粘贴一下吗。学习学习

我是在canvas 挂载的脚本
private Touch_sp:cc.Sprite=null;//鼠标图标
onLoad () {
this.Touch_sp=cc.find(“TouchSp”,this.node).getComponent(cc.Sprite)
this.Touch_sp.node.zIndex=1000
cc.game.canvas.style.cursor=“pointer”
this.node.on(cc.Node.EventType.MOUSE_ENTER,this.DragStart,this)
this.node.on(cc.Node.EventType.MOUSE_MOVE,this.Draging,this)
}

private DragStart(event)
{
    let pos=this.node.convertToNodeSpaceAR(event.getLocation());
    this.Touch_sp.node.setPosition(pos)
}

private Draging(event)
{
    var delta = event.getDelta();
    this.Touch_sp.node.x+=delta.x
    this.Touch_sp.node.y+=delta.y
}

start () {

}

const {ccclass, property} = cc._decorator;
cc.debug.setDisplayStats(false);
@ccclass
export default class Helloworld extends cc.Component {

@property(cc.Label)
label: cc.Label = null;

@property(cc.Node)
mousenode: cc.Node = null;

@property
text: string = 'hello';

onLoad(){
    cc.game.canvas.style.cursor = "none";
    this.node.on(cc.Node.EventType.MOUSE_MOVE,(move:cc.Touch)=>{
        console.log(move.getLocation());
        this.mousenode.setPosition(this.node.convertToNodeSpaceAR(move.getLocation()));
    })
}

start () {
    // init logic
    this.label.string = this.text;
}

}

完美,哈哈哈

1赞

大佬知道为什么 鼠标移动到其他的 节点之后 会 失去坐标偏移吗


我怀疑是触摸吞噬了,你把的层级设置为最上面。我是设置在最上面实现的。

1赞

zIndex 设置要很大吗? 还是 怎么设置

很大就行了,还有就是触摸的穿透,让它能够点击后面的按钮。

怀疑你的层级没有细分,或者应该为游戏分组,

node的 groupdefault

你这个适合拖动,如果始终要让鼠标图片跟随,应该直接赋予鼠标位置给节点

触摸的穿透指的是什么 。 我给一些界面加了一个 触摸检测 跟随的节点 ,滑到这里就失去触摸事件了

你框的地方绑定有按钮或者别的什么吗?鼠标的节点全局最高的话不应该会失效。

嗯按你的代码改了

这个节点有个按住 拖拽的 事件

这个是我的目录结构,最后的节点就是鼠标节点,这样设置了拖拽和按钮是不影响的。

刚刚试了一下,是因为我的 面板都添加了 防止穿透的 block那个脚本 ,但是如果不添加这个 我的面板就会穿透 ,这时候应该咋弄