我是直接用get的 然后取的是blob类型的东西,然后转成arraybuffer 然后处理
getRes?,返回的是cc.Asset类型啊,这个类型没看到有什么属性和方法可以取到arraybuffer啊?求指点~
export function getRecordData(Url: string) {
return new Promise<DataView>((resolve, reject) => {
let req = new HttpBase();
req.setresponseIsArrayBuffer();
req.open<ArrayBuffer>(msg => {
try {
//logger.logObj(msg);
let dataView = new DataView(msg);
resolve(dataView);
}
catch (err) {
reject(err);
}
}, "GET", Url)
req.send();
});
}
这里的 HttpBase 是我对 xmlhttprequest 对象的封装
setresponseIsArrayBuffer() {
this.reqins.responseType = "arraybuffer";
}
reqins 是 new XMHttpRequest() 出来的对象
哦,自己这样加载肯定可以,我是想走cc.loader这个,这样native和web等多平台都可以统一,原来在2.0以前都可以正常的,我就想知道官方是不是改动的时候忽略了自定义这个使用方式,不过还是谢谢你了!
好吧 你@下引擎组的人啊
native 环境下 不是都也实现了 xmlhttprequest 和 websocket 对象的吗?
应该 native 这样写也行吧?
不行的,native要用jsb的,反正以前我是用jsb弄的
意思是我要自己通过cc.Asset.nativeUrl自己做一遍加载操作?应该不需要吧?我在控制台已经看到文件被加载了,如图:
,只是我没办法获取加载的内容,我应该不需要重复加载才对啊?不知道是不是我没说清楚问题,我使用 http://forum.cocos.com/t/cc-loader-loadbinary/39433/3 这个方案加载的二进制文件,以前在2.0以前运行正常,现在不正常了,现在通过cc.loader.loadRes(“xxxx”) 返回给我一个cc.Asset类型,以前是返回arraybuffer,看控制台二进制文件确实是加载过了,我就想知道如何通过返回这个cc.Asset获取加载的arraybuffer
cc.loader.loadRes(url, function (err, asset) {
if (!err) {
cc.loader.load(asset.nativeUrl, function (err, result) {
// result is binary data
})
}
})
多谢多谢,jare说的意思其实我明白,我是觉得不应该重复加载才对,刚刚测试了一下,发现不会重复加载,是我想错了,多谢了
之后会提供一个接口用于获取这类引擎能识别的数据
请问,result得到的是string字符串,这个是啥原因?
本人把之前的工程代码(cocos2d-x3.19)迁移到cocos creator(1.9)里面,发现cc.loarder.loardBinary()接口被弃用了,使用上述的loadRes(尝试使用load,发现返回的asset是一串字符串,没有nativeUrl子对象,我的理解是,应该是1.9的版本是返回字符串,2.0之后版本才返回cc.Asset,欢迎纠正)代替之后,返回的字符串非二进制内容,而是经过了unicode 解码的字符串流(由于007f~00FF没有对应的字符,所有默认解码成�),造成了二进制数据缺失。请问,这个是要怎么解决?
PS:本人的工程是用python工具从数据库导出二进制数据文件(行内所说的模板表),并且在工程运行初始化的时候解析二进制数据文件,所以我这边急需一个可用的本地二进制文件加载接口
广州天河游戏公司HR,公司目前因为业务扩张在招聘:
【Cocos2dx】急 4人,薪资15-25K(优秀另议);
上班地点:广州天河,大小周休息,福利优厚,您看您这边有意向吗?或者朋友在找这方面工作的也麻烦帮忙推荐一下,可以直接加我Q或发简历至247029917@qq.com,欢迎推荐介绍
正确的加载方式,去试试吧!
var url = cc.url.raw(“resource/xxx.bin”);
cc.loader.load({ url: url, type: “binary”, },callback);
感谢, 刚好需要