您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-js 开发常用方法

2018-02-06 11:07 369 查看
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、远程图片加载

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);
}


3、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);
}
};

var callback = function (response) {
var jsonData = JSON.parse(response);
var data = jsonData["users"];
if(data){
alert(data["name"]);
// todo something
}
};


4、网页跳转

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


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

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"],


6、javaScript打开远程JS文件

var openScript = function (url) {
var script = document.createElement("script");
script.async = false;
script.src = url;
document.body.appendChild(script);
};


7、字体的描边、加粗效果可以使用自带字体完成,无需添加字体文件

var def = new cc.FontDefinition(); // 声明文字定义
def.fontName = "Verdana"; // 字体
def.fontSize = 36; // 字号大小
def.textAlign = cc.TEXT_ALIGNMENT_CENTER; // 文字对齐
def.fillStyle = cc.color(255, 255, 255); // 字体(内部)颜色

def.strokeEnabled = true; // 开启文字描边效果
def.strokeStyle = cc.color(0, 0, 0); // 描边的颜色
def.lineWidth = 3; // 字体的宽度

def.defadowEnabled = true; // 开启阴影效果
def.shadowOffsetX = 12; // 阴影X轴效果
def.shadowOffsetY = 12;

var label = new cc.LabelTTF("文字显示内容", def);
label.setPosition(cc.winSize.width / 2, cc.winSize.height / 2);
this.addChild(label);


8、将层隐藏后该层不会再被渲染,对于不会经常变化又需要经常显示和隐藏的层,可以不必每次都创建和移除,直接用setVIsible()控制就好。

9、Button和ImageView等控件setScale9Enabled(true)或者cocosStudio设置九宫格后无法再通过loadTextures改变图片。

10、PageView的监听事件和触摸事件在手机上都无效,PageView的getCurPageIndex()方法在手机上无法使用,需替换为getCurrentPageIndex()。

11、iOS版本中可能出现每个场景中第一次声音播放无效的问题,原因未知,解决方法可以在每个场景第一次执行播放声音代码时连续执行两次。

12、invalid native object错误,多半是因为因为没有addChild的原因,如果没必要addChild,那么一定要retain一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: