cb/assets/Script/ranking.ts
2025-07-16 14:55:03 +08:00

132 lines
3.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Learn TypeScript:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html
const { ccclass, property } = cc._decorator;
@ccclass
export default class ranking extends cc.Component {
@property(cc.Node)
subContextView: cc.Node = null;
@property(cc.Node)
closeButton: cc.Node = null;
@property(cc.Node)
btnRanks: cc.Node = null;
private isShow: boolean = true;
// LIFE-CYCLE CALLBACKS:
onLoad() {
}
start() {
}
showRanks() {
this.btnRanks.active = true;
if (typeof wx === 'undefined') {
return;
}
// 设置容器可见
this.subContextView.active = true;
// 设置随机数(把这个当做玩家每局结算时的分数)
let score = Math.round(Math.random() * 10);
this.subContextView.getComponent(cc.SubContextView).updateSubContextViewport();
setTimeout(() => {
wx.getOpenDataContext().postMessage({
message: score
});
this.subContextView.getComponent(cc.SubContextView).updateSubContextViewport();
}, 200);
};
onRanksBtnClicked() {
if (typeof wx === 'undefined') {
this.showRanks(); // 非微信环境直接显示
return;
}
// 直接尝试获取用户信息
wx.getUserInfo({
success: (res) => {
console.log('用户已授权或刚刚授权', res.userInfo);
this.showRanks(); // ✅ 授权成功,显示排行榜
this.isShow = false;
},
fail: (err) => {
console.log('用户拒绝授权', err);
// 可选:提示用户必须授权才能查看排行榜
}
});
}
protected update(dt: number): void {
// if (this.isShow) {
// this.onRanksBtnClicked();
// }
}
closeRanks() {
console.log('关闭排行榜');
this.subContextView.getComponent(cc.SubContextView).updateSubContextViewport();
this.closeButton.active = false;
// 设置容器不可见,即关闭排行榜,并让开放域清空排名信息
this.subContextView.active = false;
wx.getOpenDataContext().postMessage({
message: 'close'
});
}
initUserInfoButton() {
// 微信授权此代码来自Cocos官方
if (typeof wx === 'undefined') {
return;
}
let systemInfo = wx.getSystemInfoSync();
let width = systemInfo.windowWidth;
let height = systemInfo.windowHeight;
let button = wx.createUserInfoButton({
type: 'text',
text: '',
style: {
left: 0,
top: 0,
width: width,
height: height,
lineHeight: 40,
backgroundColor: '#00000000',
color: '#00000000',
textAlign: 'center',
fontSize: 10,
borderRadius: 4
}
});
button.onTap((res) => {
if (res.userInfo) {
// 可以在这里获取当前玩家的个人信息,如头像、微信名等。
console.log('授权成功!');
this.showRanks()
this.isShow = true;
}
else {
console.log('授权失败!');
this.showRanks()
}
button.hide();
button.destroy();
});
}
// update (dt) {}
}