微信小程序 wx.createUserInfoButton

微信小程序获取个人信息按钮( wx.createUserInfoButton) 创建按钮怎么设置本地图片 creator 发布的项目

1赞

(帖子被作者删除,如无标记将在 24 小时后自动删除)

你好你这个按钮的位置是怎么确定下来的

只能网络图片吗??? 我网络图片也不显示啊.

1赞

在开发者工具中,查看好图片路径,直接填上去即可。另外,只能真机上才能看到,开发者工具看不到图。

位置,就根据top ,bottom ,left ,right 来设定,看微信小游戏文档。

1赞

嗯嗯,这老哥的办法亲测ok,目前我还试了其他几个办法:好使的有:这老哥的办法通过开发者工具找到图片途径,如"res/raw-assets/Res/texture/asdasd.c9b4a.jpg",还有就是通过图片url的方式,不好使的:creater的cc.url.raw(“resources/start.png”),供参考

可以用本地图片,正如上面那位仁兄说的,类似“res/raw-assets/Res/texture/asdasd.c9b4a.jpg"这样就可以

要注意两点:
1 url不能是用cocos的api从网上下载后放在本地文件储存的资源,因为真实文件的绝对路径不一样,并且不能保证下载成功
2 如果是res/raw-assets内的文件,打了md5Cache,文件名会变,注意调整

怎么做到的?我用同样的逻辑图片不能显示

怎么调整按钮坐标融合到Cocos里面呀?

创建一个透明按钮在cc.Button的node节点上:

private createAuthorizeBtn(btnNode:cc.Node) {
    let btnSize = cc.size(btnNode.width+10,btnNode.height+10);
    let frameSize = cc.view.getFrameSize();
    let winSize = cc.director.getWinSize();
    // console.log("winSize: ",winSize);
    // console.log("frameSize: ",frameSize);
    //适配不同机型来创建微信授权按钮
    let left = (winSize.width*0.5+btnNode.x-btnSize.width*0.5)/winSize.width*frameSize.width;
    let top = (winSize.height*0.5-btnNode.y-btnSize.height*0.5)/winSize.height*frameSize.height;
    let width = btnSize.width/winSize.width*frameSize.width;
    let height = btnSize.height/winSize.height*frameSize.height;
    // console.log("button pos: ",cc.v2(left,top));
    // console.log("button size: ",cc.size(width,height));

    let self = this;
    self.btnAuthorize = wx.createUserInfoButton({
        type: 'text',
        text: '',
        style: {
            left: left,
            top: top,
            width: width,
            height: height,
            lineHeight: 0,
            backgroundColor: '',
            color: '#ffffff',
            textAlign: 'center',
            fontSize: 16,
            borderRadius: 4
        }
    })

    self.btnAuthorize.onTap((uinfo) => {
        console.log("onTap uinfo: ",uinfo);
        if (uinfo.userInfo) {
            console.log("wxLogin auth success");
            wx.showToast({title:"授权成功"});
        }else {
            console.log("wxLogin auth fail");
            wx.showToast({title:"授权失败"});
        }
    });
}
9赞

老哥。新手刚入坑,能在详细点说说吗?非常感谢。我自己的理解是 在用户必须点击的按钮上加一个空白按钮?然后执行代码操作对吗?

我这里的代码是用户必须点击的按钮上创建一个透明按钮,把这个用户必须点击的按钮的位置和宽高信息告知需要创建的透明按钮,然后注册它的点击事件。你可以在测试的时候把按钮背景设为红色backgroundColor: ‘#ff0000’。要是有更方便的做法,一起探讨。

我现在的情况是这样子的、 用户点击某个按钮。出现微信的返回userInfoButton 然后再点击这个button 出现授权,然后执行 button.hide();隐藏掉这个按钮。 然后才能进入我的游戏。 这样好麻烦啊、。第一种最好的想法:用户进入小游戏这个授权弹窗由我们主动触发,用户点授权然后进游戏。类似于以前的wx.getUserINfo();退而求其次可不可以直接让用户进游戏时候跳过点击按钮这一步,直接让出现这个userInfoButton 让他点btn 然后出现授权、 现在是三步,感觉体验超级差。您说的那个方法,用户第一次点击的时候会执行哪个事件呢?还是说授权事件点击后 接着执行按钮本来的事件?

我的也是这样做的

方法好使,感谢分享

标记一下

老哥,这个办法完美解决,只是不能给这个按钮加上点击效果,不知道有没有办法?

感谢分享,非常好用

Mark 以后用

您好,新手一枚,想请教下,这段代码放到什么位置呢??有点蒙蔽