加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Cocos2d-JS开发中的一些小技巧

发布时间:2020-12-14 20:30:44 所属栏目:百科 来源:网络整理
导读:1、获取URL中的请求参数的值----此方法接收参数名 1 2 3 4 5 6 functiongetQueryString(name){ varreg= new RegExp( "(^|)" +name+ "=([^]*)(|$)" , "i" ); varr=window.location.search.substr(1).match(reg); if (r!=null) return decodeURIComponent(r[2]

1、获取URL中的请求参数的值----此方法接收参数名

1
2
3
4
5
6
functiongetQueryString(name){
varreg= new RegExp( "(^|&)" +name+ "=([^&]*)(&|$)" , "i" );
varr=window.location.search.substr(1).match(reg);
if (r!=null) return decodeURIComponent(r[2]);
null;
};


2、底图上添加文字---适用于按钮Sprite

6
7
8
9
10
varMyButtonSprite=cc.Sprite.extend({
ctor:function(fileName,title,fontName,fontSize){
this ._super(fileName);
vartitleLabel= cc.LabelTTF(title,fontSize);
.addChild(titleLabel);
titleLabel.x= .getContentSize().width/2;
titleLabel.y= .getContentSize().height/2;
}
});

3、远程图片加载

10
11
12
13
14
15
16
17
loadImgFromUrl:function(target,imgUrl,p,tag){
(!imgUrl) ;
varself=target;
varloadCb=function(err,img){
cc.textureCache.addImage(imgUrl);
vartexture2d= cc.Texture2D();
texture2d.initWithElement(img);
texture2d.handleLoadedTexture();
varsp= 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

17
18
19
20
21
22
23
24
25
26
27
28
29
varsendRequest=function(url,params,isPost,callback,errorcallback){
(url==null||url== '' )
;
varxhr=cc.loader.getXMLHttpRequest();
(isPost){
xhr.open( "POST" } else {
"GET" }
xhr.setRequestHeader( "Content-Type" "application/x-www-form-urlencoded" );
xhr.onreadystatechange=function(){
(xhr.readyState==4&&xhr.status==200){
varresponse=xhr.responseText;
(callback)
callback(response);
else (xhr.readyState==4&&xhr.status!=200){
varresponse=xhr.responseText;
(errorcallback)
errorcallback(response);
}
};
(params==null||params== "" ){
xhr.send();
{
xhr.send(params);
}
5、JSON解析以及上述第4条的回调方法

8
varcallback=function(response){
varjsonData=JSON.parse(response);
vardata=jsonData[ "users" ];
(data){
alert(data[ "name" ]);
//todosomething
}
6、自定义Loading界面

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
varMyLoaderScene=cc.Scene.extend({
_interval:null,
_length:0,
_count:0,
_label:null,
_className: "MyLoaderScene" init:function(){
varself= ;
//bg
varbgLayer=self._bgLayer=cc.LayerColor.create(cc.color(32,32,255));
bgLayer.setPosition(cc.visibleRect.bottomLeft);
self.addChild(bgLayer,0);
//loadingpercent
varlabel=self._label=cc.LabelTTF.create( "玩命加载中...0%" "Arial" label.setPosition(cc.pAdd(cc.visibleRect.center,cc.p(0,0)));
label.setColor(cc.color(180,180,180));
bgLayer.addChild( ._label,10);
return true ;
_initStage:function(img,centerPos){
;
vartexture2d=self._texture2d= cc.Texture2D();
texture2d.initWithElement(img);
texture2d.handleLoadedTexture();
varlogo=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(){
;
cc.Node.prototype.onEnter.call(self);
self.schedule(self._startLoading,0.3);
onExit:function(){
cc.Node.prototype.onExit.call( );
vartmpStr= ;
._label.setString(tmpStr);
/**
*initwithresources
*@param{Array}resources
*@param{Function|String}cb
*/
initWithResources:function(resources,cb){
(typeofresources== "string" )resources=[resources];
.resources=resources||[];
.cb=cb;
_startLoading:function(){
;
self.unschedule(self._startLoading);
varres=self.resources;
self._length=res.length;
self._count=0;
cc.loader.load(res,function(result,count){self._count=count;},function(){
(self.cb)
self.cb();
});
self.schedule(self._updatePercent);
_updatePercent:function(){
;
varcount=self._count;
varlength=self._length;
varpercent=(count/length*100)|0;
percent=Math.min(percent,100);
self._label.setString( "玩命加载中..." +percent+ "%" );
(count>=length)self.unschedule(self._updatePercent);
}
});
MyLoaderScene.preload=function(resources,cb){
var_myLoaderScene=null;
(!_myLoaderScene){
_myLoaderScene= MyLoaderScene();
_myLoaderScene.init();
}
_myLoaderScene.initWithResources(resources,cb);
cc.director.runScene(_myLoaderScene);
_myLoaderScene;
7、网页跳转

1
window.location.href= "http://www.baidu.com"

8、关于进入游戏时黑屏时间较长的处理方法

1)

<bodystyle="padding:0;margin:0;background:#000;">

删除index.html中<body>标签的样式background: #000;

2)按照自己需要添加编译模块 修改project.json如

1
"modules" :[ "core" "actions" "shape-nodes" "labels" "menus" "transitions" "physics" "chipmunk" "gui" ],serif; font-size:14px"> 3) 压缩game.min.js

4) 找到CCBoot.js中得canvasNode.style.backgroundColor = "black";注释掉


本文由CocoaChina会员happyfhc总结,欢迎大家学习与讨论。

来源网址:http://www.cocoachina.com/bbs/read.php?tid=226079

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!