CocosCreator实现TableView

CocosCreator中没有自带的tableview插件,虽然样例中有listview,但是很多功能无法实现,比如:无法在指定位置插入数据,item的个数必须大于30等,所以我就按照自己的思路,实现了一个TableView插件。
我的思路是,根据scrollview移动的偏移量,算出显示在视图中的起始位置,然后对视图中的item进行刷新。
主要的代码:

protected freshShowItem() {
	let nShowIndex = this.getShowStartIndex();
	for (let index = 0; index < this._nShowCount; index++) {
		let nItemIndex = nShowIndex + index;
		if (nItemIndex >= this._dataList.length) {    //超出了下边界
			break;
		}
		let nItemID = (nItemIndex + this._nItemCount) % this._nItemCount;
		let node = this._itemList[nItemID];
		node.y = this.getItemPosY(nItemIndex);
		let ctrl = node.getComponent(this.getTableItemName());
		let newData = this._dataList[nItemIndex];
		if (newData != null && ctrl.getData() != newData) {
			ctrl.updateItem(nItemID, nItemIndex, this._dataList[nItemIndex]);
		}
	}
}

实现效果:

代码地址:

nodejs 资源转发

之前在做微信小游戏或者抖音小游戏排行榜时候,难免会使用平台自带的用户头像地址,而抖音的头像地址不是固定地址,并且平台的域名限制,导致一些图片显示不出来。
所以我想出,可以用我们的https服务器进行转发,小游戏后台配置我们的域名,从而解决图片不显示的问题。
下面是用nodejs实现资源转发的功能

app.get("/resForward", function(request, respones) {
    var myObj = url.parse(request.url,true);
    let requestUrl = myObj.query.url;
    requestUrl = base64_decode(requestUrl);
    console.log("resForward requestUrl:"+requestUrl);

    let parsedUrl = url.parse(requestUrl);
    let httpTemp = (parsedUrl.protocol == "https:") ? https : http;

    let req = httpTemp.get(requestUrl, (res)=>{
        respones.writeHead(res.statusCode, res.headers);
        res.on('data', function (chunk) {
            respones.write(chunk);
        });
        res.on('end', function () {
            respones.end();
        });
    });
    req.on('error', function (e) {
        respones.writeHead(404);
        respones.end();
    });
});

工程地址:gitee地址

linux 使用zsign

ios超级签名中,我对比了isign和zsign,
1. isign签名的包发现有些会安装不了,而且签名麻烦点。
2. zsign可以使用p12秘钥文件,直接签名打包。
zsign的github地址
我已经用linux编译好zsign命令,可以直接下载使用。zsign命令的下载地址

linux系统使用zsign
1. 安装zip,unzip,openssl-devel,终端执行下面的命令
yum install zip
yum install unzip
yum install openssl-devel

2. 添加权限
chmod 777 ./zsign

3. 可以准备好秘钥文件:key.p12,秘钥文件的密码:password, 授权文件:test.mobileprovision,要签名的包:test.ipa

4. 执行命令
./zsign -f -k “./key.p12” -p “password” -m “./test.mobileprovision” -o “./output.ipa” ./test.ipa -z 9

nodejs实现AppleConnectApi

之前在研究ios超级签名系统,查了很多的api,发现苹果有自带的api提供给开发者。这个相比较spaceship而言,可以不用考虑双重验证,不用每个月获取一次验证码。
因此,我就用nodejs来实现Apple Connect Api接口,分享给大家
下面是调用例子

const AppleApi = require("./AppleApi");

//aple connect api的秘钥信息
let iis = "testtest";
let kid = "test";
let keypath = "./sign.p8";

//测试的包名
let identifier_id = "com.test.mobile.test4";
//手机设备的udid
let udid = "1a2afcc4b41db77470ea256e220c1cdb97b07d44";

let appUtils = new AppleApi(iis, kid, keypath);
//获取设备列表
appUtils.get_device_list((code, result)=>{
    console.log("get_device_list:", code, result);
});

//注册设备
appUtils.register_device(udid, (code, result)=>{
    console.log("register_device:", code, result);
})

//获取bundle列表
appUtils.get_bundle_list((code, result)=>{
    console.log("get_bundle_list:", code, result);
});

//通过包名获取bundle信息
appUtils.get_bundle_by_identifier_id(identifier_id, (code, result)=>{
    console.log("get_bundle_by_identifier_id:", code, result);
});

//获取证书列表
appUtils.get_cert_list((code, result)=>{
    console.log("get_cert_list:", code, result);
});

//获取第一个发布证书
appUtils.get_first_dis_cert((code, result)=>{
    console.log("get_first_dis_cert:", code, result);
});

//获取profile列表
appUtils.get_profile_list((code, result)=>{
    console.log("get_profile_list:", code, result);
});

//注册设备,并且更新profile,这里需要有一个发布证书
appUtils.register_device_and_profile(udid, identifier_id, (code, result)=>{
    console.log("register_device_and_profile:", code, result);
    if(code){
        //有异常信息
        return;
    }

    //下载profile到本地目录
    result.download("./test.mobileprovision");
});

工程地址:
github地址
gitee地址