问题关键:ios无法加载第三方obj文件以及项目里的obj文件
步骤:
1.ios需要先将第三方obj文件下载到手机本地目录
var url = "https://..." // 第三方obj文件或者项目里的obj文件
var dtask = plus.downloader.createDownload( url, {}, function ( d, status ) {
if ( status == 200 ) {
// 下载完成
let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
getfile(fileSaveUrl)
} else {
// 下载失败
}
});
dtask.start(); // 关键代码
2.解析刚刚下载到手机里的obj文件
function getfile(fileSaveUrl){
// #ifdef APP-PLUS
return new Promise((resolve,reject)=>{
plus.io.resolveLocalFileSystemURL(fileSaveUrl, entry => {
var reader = null;
entry.file( file => {
reader = new plus.io.FileReader();
reader.onloadend = ( read )=> {
resolve(read.target.result)
};
reader.readAsDataURL( file );
}, function ( error ) {
alert( error.message );
} );
},err=>{
resolve(e)
})
})
// #endif
// #ifndef APP-PLUS
return new Promise((resolve,reject)=>{
resolve(e)
})
// #endif
}
3. 在第一步下载完成里加载obj文件
var url = "https://..." // 第三方obj文件或者项目里的obj文件
var dtask = plus.downloader.createDownload( url, {}, function ( d, status ) {
if ( status == 200 ) {
// 下载完成
let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
getfile(fileSaveUrl).then(res=>{
loader.load( res, function ( obj ) {
object = obj;
}, onProgress, onError );
})
} else {
// 失败
}
});
dtask.start();
4.主要代码
function onProgress( xhr ) {
if ( xhr.lengthComputable ) {
const percentComplete = xhr.loaded / xhr.total * 100;
// console.log( 'model ' + percentComplete.toFixed( 2 ) + '% downloaded' );
}
}
function onError() {}
const loader = new OBJLoader( manager );
var url = "https://..." // 第三方obj文件或者项目里的obj文件
var dtask = plus.downloader.createDownload( url, {}, function ( d, status ) {
if ( status == 200 ) {
// 下载完成
let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
getfile(fileSaveUrl).then(res=>{
loader.load( res, function ( obj ) {
object = obj;
}, onProgress, onError );
})
} else {
// 失败
}
});
dtask.start();