1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 微信小游戏排行榜:Cocos Creator

微信小游戏排行榜:Cocos Creator

时间:2019-07-08 22:42:26

相关推荐

微信小游戏排行榜:Cocos Creator

上一篇文章介绍了主域和子域的概念,微信小游戏:主域子域,这一篇介绍一下怎样在微信小游戏中制作好友排行榜

创建工程

由于开放数据域是一个封闭、独立的 JavaScript 作用域,所以开发者需要创建两个项目:

主域项目工程(正常的游戏项目)子域项目工程(通过微信 API 获取用户数据来做排行榜等功能)

在我的示例中client是主域工程,children是子域工程,工程目录可以不相关

发布设置有几点注意事项

首先,左侧主域中开放数据域代码目录要和右侧子域的游戏名称相同其次,右侧子域的发布路径要在主域发布路径之下,在我的工程中,主域的发布路径是

G:\B2\trunk\code\client\build,那么子域的发布路径就要是G:\B2\trunk\code\client\build\wechatgame最后要先构建主域,再构建子域,因为构建子域的时候主域目录可能不存在,如果确认主域已经构建过,且只修改了子域的内容,也可以只构建子域工程。如果构建了主域要重新构建子域,因为构建的时候,Cocos Creator会把之前的构建目录删除掉。

核心代码

主域

这段代码可以写在你的游戏结算函数中,告诉子域游戏要结算了

if(cc.sys.platform == cc.sys.WECHAT_GAME){wx.postMessage({score : this.score, type : "open"});}

子域

var self = null;cc.Class({extends: ponent,properties: {scroll_view_content : cc.Node,score_num_txt : cc.Label,max_score_notice : cc.Node,scroll_item_prefab : cc.Prefab,root_node : cc.Node,},start () {this.max_score = 0;if(cc.sys.platform == cc.sys.WECHAT_GAME){wx.onMessage(this.on_message_come);wx.getUserCloudStorage({keyList : ["max_score"],success : this.get_user_data_success,fail : this.get_user_data_fail,});wx.getFriendCloudStorage({keyList : ["max_score"],success : this.get_friend_data_success,fail : this.get_friend_data_fail,});}this.root_node.active = false;this.cached_scroll_item = [];this.cached_data = {};self = this;},on_message_come : function(data){if(data["type"] == "open"){var score = data["score"];self.refresh(score);if(score > self.max_score){wx.setUserCloudStorage({KVDataList : [{key : "max_score", value : score.toString()}],success : self.set_data_success,fail : self.set_data_fail,});wx.getFriendCloudStorage({keyList : ["max_score"],success : self.get_friend_data_success,fail : self.get_friend_data_fail,});self.max_score = score;}}},refresh : function(score){this.score_num_txt.string = score;if(score > this.max_score){this.max_score_notice.active = true;}else{this.max_score_notice.active = false;}var items_d = [];for(var k in this.cached_data){items_d.push(this.cached_data[k]);}items_d.sort(function(a, b){return b["max_score"] - a["max_score"];});for(var i = 0; i < items_d.length; i++){if(i < this.cached_scroll_item.length){this.cached_scroll_item[i].refresh(i, items_d[i]);}else{var new_node = cc.instantiate(this.scroll_item_prefab);new_node.parent = this.scroll_view_content;var controller = new_node.getComponent("RankItemController");controller.refresh(i, items_d[i]);this.cached_scroll_item.push(controller);}}},set_data_success : function(result){console.log(result);},set_data_fail : function(result){console.log(result);},get_user_data_success : function(result){console.log(result);var data = result["KVDataList"];for(var item in data){if(data[item]["key"] == "max_score"){self.max_score = parseInt(data[item]["value"]);break;}}},get_user_data_fail : function(result){console.log(result);},get_friend_data_success : function(result){var data = result["data"];for(var k in data){var final_d = {};var item_d = data[k];var kv_list = item_d["KVDataList"]final_d["url"] = item_d["avatarUrl"];final_d["nickname"] = item_d["nickname"];for(var kv in kv_list){if(kv_list[kv]["key"] == "max_score"){final_d["max_score"] = parseInt(kv_list[kv]["value"]);break;}}self.cached_data[item_d["openid"]] = final_d;}console.log(result);console.log(self.cached_data);},get_friend_data_fail : function(result){console.log(result);}});

获取好友数据成功后的数据格式可以参考微信小游戏:主域子域中的介绍各个子域函数的用法也可以参考微信小游戏:主域子域中的介绍

下一篇文章将介绍一些微信小游戏中遇到的一些问题及解决方式

1.开发工具:/

推广一下自己做的简单的小游戏

创建了一个小游戏交流群,如果过期或者满了或者有问题交流 可以加我微信 备注“微信小游戏”

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。