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

前端之家收集整理的这篇文章主要介绍了Cocos2d-JS开发中的一些小技巧前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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
@H_403_291@ 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);
/**
@H_404_813@ *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

猜你在找的Cocos2d-x相关文章