文档章节

Cocos2d-JS开发中的一些小技巧(持续更新)

piggybear
 piggybear
发布于 2015/02/16 10:28
字数 770
阅读 19
收藏 0

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

1
2
3
4
5
6
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

1
2
3
4
5
6
7
8
9
10
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、远程图片加载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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条的回调方法

1
2
3
4
5
6
7
8
var callback = function (response) {
         var jsonData = JSON.parse(response);
         var data = jsonData[ "users" ];
         if (data){
             alert(data[ "name" ]);
             // todo something
         }
     };


6、自定义Loading界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
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、网页跳转

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


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

1)

1
<body style= "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" ],


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


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

本文转载自:http://blog.csdn.net/aa294194253/article/details/43056949

共有 人打赏支持
piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
搭建Cocos2d-JS开发环境

使用Cocos2d-JS引擎开发游戏,主要的程序代码是JavaScript语言,因此,凡是能够开发JavaScript语言工具都适用于Cocos2d-JS游戏开发。本书我们推荐WebStorm和Cocos Code IDE工具。 搭建WebSt...

智捷课堂
2015/03/18
0
0
cocos2d-x支持c++、js、lua开发

作者:左文 链接:https://www.zhihu.com/question/21130385/answer/21789568 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 纯属个人观点 1 Unity3d支...

壹峰
2017/10/18
0
0
Cocos2d-JS中JavaScript继承

JavaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求。由于Cocos2d-JS引擎是从Cocos2d-x演变而来的,在Cocos2d-J...

智捷课堂
2015/03/17
0
0
JavaScript语言基础-环境搭建

我们要想编写和运行JavaScript脚本,则需要:JavaScript编辑工具和JavaScript运行测试环境。下面我们分别介绍一下。 JavaScript编辑工具 JavaScript编辑工具最简单的可以使用一些文本编辑工具...

智捷课堂
2015/03/12
0
0
Cocos2d-JS键盘事件

Cocos2d-JS中的键盘事件与触摸事件不同,它没有空间方面信息。键盘事件不仅可以响应键盘,还可以响应设备的菜单。 键盘事件是EventKeyboard,对应的键盘事件监听器(cc.EventListener.KEYBOA...

智捷课堂
2015/04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

负载均衡的解决方案有哪些

负载均衡器服务可满足大型组织的需求,支持所有数据中心和跨数据中心高可靠性场景。 本地负载均衡,通过附带或者未附带持久性覆盖选项,Incapsula支持各种负载均衡算法,以优化服务器之间的流...

上树的熊
49分钟前
4
0
Java实现在线打开word文档加盖印章/盖章/签名功能

前言: 我们知道,大型一点的OA办公系统都会有很多在线处理office办公文档的需求。其中有一点也基本绕不开,那就是为文档盖章或添加手写签名来保护文档,让被盖章的文档不再被编辑。 在Java中...

山里的红杏
56分钟前
5
0
js控制输入正负数,小数点后保留两位

//限制数字function clearNoNum(obj){ //修复第一个字符是小数点 的情况. if(obj.value !=''&& obj.value.substr(0,1) == '.'){ obj.value=""; } obj.value ...

一直在成长的程序猿
59分钟前
3
0
动态代理

具体场景 为了使代理类与被代理类对第三方有相同的函数,代理类与被代理类一般实现一个公共的interface,定义如下 public interface Subject { void rent(); void hello(String s)...

wuyiyi
今天
2
0
时间字段

我们看看这几个数据库中(mysql、oracle和sqlserver)如何表示时间 mysql数据库:它们分别是 date、datetime、time、timestamp和year。date :“yyyy-mm-dd”格式表示的日期值 time :“hh:...

DemonsI
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部