132 lines
3.7 KiB
TypeScript
132 lines
3.7 KiB
TypeScript
// 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) {}
|
||
}
|