Cocos2d-JS开发中的一些小技巧
1、获取URL中的请求参数的值----此方法接收参数名
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURIComponent(r[2]);
return null;
};
2、底图上添加文字---适用于按钮Sprite
var MyButtonSprite = cc.Sprite.extend({
ctor: function (fileName, title, fontName, fontSize) {
this._super(fileName);
var titleLabel = new cc.LabelTTF(title, fontName, fontSize);
this.addChild(titleLabel);
titleLabel.x = this.getContentSize().width / 2;
titleLabel.y = this.getContentSize().height / 2;
}
});
3、远程图片加载
loadImgFromUrl: function (target, imgUrl, p, tag) {
if(!imgUrl)return;
var self = target;
var loadCb = function(err, img){
cc.textureCache.addImage(imgUrl);
var texture2d = new cc.Texture2D();
texture2d.initWithElement(img);
texture2d.handleLoadedTexture();
var sp = new cc.Sprite();
sp.initWithTexture(texture2d);
self.addChild(sp);
sp.x = p.x;
sp.y = p.y;
sp.tag = tag;
};
cc.loader.loadImg(imgUrl, {isCrossOrigin : false }, loadCb);
},
4、XMLHttpRequest
var sendRequest = function(url, params, isPost, callback, errorcallback){
if(url == null || url == '')
return;
var xhr = cc.loader.getXMLHttpRequest();
if(isPost){
xhr.open("POST",url);
}else{
xhr.open("GET",url);
}
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if(xhr.readyState == 4 && xhr.status == 200){
var response = xhr.responseText;
if(callback)
callback(response);
}else if(xhr.readyState == 4 && xhr.status != 200){
var response = xhr.responseText;
if(errorcallback)
errorcallback(response);
}
};
if(params == null || params == ""){
xhr.send();
}else{
xhr.send(params);
}
};
5、JSON解析以及上述第4条的回调方法
var callback = function (response) {
var jsonData = JSON.parse(response);
var data = jsonData["users"];
if(data){
alert(data["name"]);
// todo something
}
};
6、自定义Loading界面
var MyLoaderScene = cc.Scene.extend({
_interval : null,
_length : 0,
_count : 0,
_label : null,
_className:"MyLoaderScene",
init : function(){
var self = this;
// bg
var bgLayer = self._bgLayer = cc.LayerColor.create(cc.color(32, 32, 32, 255));
bgLayer.setPosition(cc.visibleRect.bottomLeft);
self.addChild(bgLayer, 0);
//loading percent
var label = self._label = cc.LabelTTF.create("玩命加载中... 0%", "Arial", 24);
label.setPosition(cc.pAdd(cc.visibleRect.center, cc.p(0, 0)));
label.setColor(cc.color(180, 180, 180));
bgLayer.addChild(this._label, 10);
return true;
},
_initStage: function (img, centerPos) {
var self = this;
var texture2d = self._texture2d = new cc.Texture2D();
texture2d.initWithElement(img);
texture2d.handleLoadedTexture();
var logo = self._logo = cc.Sprite.create(texture2d);
logo.setScale(cc.contentScaleFactor());
logo.x = centerPos.x;
logo.y = centerPos.y;
self._bgLayer.addChild(logo, 10);
},
onEnter: function () {
var self = this;
cc.Node.prototype.onEnter.call(self);
self.schedule(self._startLoading, 0.3);
},
onExit: function () {
cc.Node.prototype.onExit.call(this);
var tmpStr = "玩命加载中... 0%";
this._label.setString(tmpStr);
},
/**
* init with resources
* @param {Array} resources
* @param {Function|String} cb
*/
initWithResources: function (resources, cb) {
if(typeof resources == "string") resources = [resources];
this.resources = resources || [];
this.cb = cb;
},
_startLoading: function () {
var self = this;
self.unschedule(self._startLoading);
var res = self.resources;
self._length = res.length;
self._count = 0;
cc.loader.load(res, function(result, count){ self._count = count; }, function(){
if(self.cb)
self.cb();
});
self.schedule(self._updatePercent);
},
_updatePercent: function () {
var self = this;
var count = self._count;
var length = self._length;
var percent = (count / length * 100) | 0;
percent = Math.min(percent, 100);
self._label.setString("玩命加载中... " + percent + "%");
if(count >= length) self.unschedule(self._updatePercent);
}
});
MyLoaderScene.preload = function(resources, cb){
var _myLoaderScene = null;
if(!_myLoaderScene) {
_myLoaderScene = new MyLoaderScene();
_myLoaderScene.init();
}
_myLoaderScene.initWithResources(resources, cb);
cc.director.runScene(_myLoaderScene);
return _myLoaderScene;
};
7、网页跳转
window.location.href = "http://www.baidu.com"
8、关于进入游戏时黑屏时间较长的处理方法
1)
<body style="padding:0; margin: 0; background: #000;">
删除index.html中<body>标签的样式background: #000;
2)按照自己需要添加编译模块 修改project.json如
"modules" : ["core", "actions","shape-nodes", "labels","menus","transitions","physics","chipmunk","gui"],
Cocos2d-JS开发中的一些小技巧的更多相关文章
- JS开发中常用的小技巧
1.获取指定范围内的随机数 1 2 3 function getRadomNum(min,max){ return Math.floor(Math.random() * (max - min ...
- JS开发中的一些小技巧和方法
生成指定范围内的随机数 当我们需要获取指定范围(min,max)内的整数的时候,下面的代码非常适合:这段代码用的还挺多的. function setRadomNum(min,max){ return ...
- RS开发中的一些小技巧[不定期更新]
从9月份一直忙到了现在,项目整体的改版工作也完成了十有八九了,有些事情只有你自己真正的做了,你才能明白:哦,原来还可以这个样子,这样做真的好了很多呢,接下来我就分享一些最近遇到的RS开发的一些小技巧, ...
- 日常开发中的shell小技巧
工具推荐 命令行中很方便的代码统计工具---cloc 强大的分屏工具---tmux 最舒服的markdown书写工具---typora markdown图床推荐--七牛云 模拟生成熵(避免暴力手搓键盘 ...
- Java开发中的一些小技巧
原文:http://www.cnblogs.com/xdp-gacl/p/3490276.html 一. Java获取URL地址中传递的参数 /** * 获取URL中的参数名和参数值的Map集合 * ...
- iOS开发中的那些小技巧
前言:今天在写代码的过程中遇到一个需要修改系统navigationBar的背景色,我起初用的是barTintColor去修改但是防不住系统点击按钮的时候会有一个渲染高亮的效果,调了好久没有达到自己想要 ...
- ios开发中的一些小技巧
1.如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码: UIImage *image = [UIImage imageNamed:filename]; CGImageRe ...
- JS开发中的各大技巧
「String Skill」:字符串技巧 「Number Skill」:数值技巧 「Boolean Skill」:布尔技巧 「Array Skill」:数组技巧 「Object Skill」:对象技巧 ...
- Handlebars.js循环中索引(@index)使用技巧(访问父级索引)
使用Handlebars.js过程中,难免会使用循环,比如构造数据表格.而使用循环,又经常会用到索引,也就是获取当前循环到第几次了,一般会以这个为序号显示在页面上. Handlebars.js中获取循 ...
随机推荐
- 去掉 NavigationBar 底部的那条黑线
//加入下面两行代码即可[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UI ...
- python学习之-- 故障记录汇总
以下为我编程期间遇到的错误并进行记录,起始时间2017-6-21 时间:2018/11/21问题现象:ajax 执行异步提交后,在访问日志看出现了2次post执行分析:默认ajax提交是执行一次,然后 ...
- Codeforces Gym101606 E.Education (2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017))
E Education 这个题有点意思,就是找满足条件的最小价格里的最大值的人数,有点贪心的思想吧,一开始写错了,人群的那个不能排序,而且是最小价格里找能住下人最多的部门,让这个部门去住这个房间.在循 ...
- Codeforces 696E ...Wait for it...(树链剖分)
题目链接 ...Wait for it... 考虑树链剖分. 对于树上的每个点开一个set,记录当前该节点上所有的girls. 每个节点初始的权值为set中的最小值. 询问的时候每次在路径上寻找最小 ...
- 信息收集渠道:文本分享类网站Paste Site
信息收集渠道:文本分享类网站Paste Site Paste Site是一种专门的文本分享的网站.用户可以将一段文本性质的内容(如代码)上传到网站,然后通过链接分享给其他用户.这一点很类似于现在的优酷 ...
- Usaco_Contest_2013_Open_Bovine Problem 1. Bovine Ballet
Problem 1: Bovine Ballet [Brian Dean, 2013] In an attempt to challenge the stereotypical perception ...
- openssl转换各种证书的语法收集
参考网址:https://www.sslshopper.com/ssl-converter.html 个人总结:先找准要生成什么证书先,尤其是正规购买的流程与openssl生成的不一样,所以先确定是什 ...
- 【spring data jpa】使用spring data jpa时,关于service层一个方法中进行【删除】和【插入】两种操作在同一个事务内处理
场景: 现在有这么一个情况,就是在service中提供的一个方法是先将符合条件的数据全部删除,然后再将新的条件全部插入数据库中 这个场景需要保证service中执行两步 1.删除 2.插入 这两步自然 ...
- C# Http方式下载文件到本地
下文代码是从网络(http://www.cnblogs.com/hayden/archive/2012/04/26/2472815.html)得来,亲测好用.我中修改了下格式和注释,版权属于原作者“舒 ...
- SwitchyOmega 代理设置
1.SwitchyOmega官网 https://www.switchyomega.com/ 2.下载插件 https://www.switchyomega.com/download.html 3.配 ...