Assets 资源
将资源加载到你的场景中
资源是应用程序所需的文本或二进制资源。其中包括图像、纹理、声音、视频等。对于绝大多数组件,包括 <ViroImage>
、<ViroSound>
、<ViroVideo>
等,要使用的资源是通过 source 属性指定的。
source
接受本地和远程资源。要使用本地资源,请使用 require 函数,如下所示:
<Viro360Image source={require('./res/360_park.jpg')} />
在调试版本中,本地资源从正在运行的包服务器中提取。在发布版本中,本地资源与你的应用程序捆绑在一起。
要使用远程资源,只需设置源 URI,如下例所示:
<Viro360Image source={{ uri: 'https://www.mywebsite.com/360_park.jpg' }} />
资源文件命名指南 包服务器和资源捆绑器将无法正确提供名称中包含空格、连字符、括号或其它符号的资源。 名称相同但扩展名不同的资源在 Android 上不起作用。为每个资源提供唯一的名称。
支持的资源类型
React Native 开箱即用地支持以下资源,这意味着它们将在发布模式下与你的应用程序一起打包,并在调试模式下由你的包服务器支持获取。
图片格式:“jpg”、“jpeg”、“png”、“gif” 视频格式:“m4v”、“mov”、“mp4”、“mpeg”、“mpg”、“webm” 音频格式:“aac”、“aiff”、“caf”、“m4a”、“mp3”、“wav”
此外,Viro 增加了对 3D 对象资源的支持: 3D 对象格式:obj、mtl、vrx(Viro 自定义 3d 模型格式)、gltf、glb、bin、arobject
Viro 仅为通过 react-viro-cli 脚本创建的项目添加了对这些格式的支持。对于不是使用此脚本创建的项目,必须按照下一部分手动添加这些格式。
增加资源类别
区分大小写 资源类型区分大小写!例如,默认情况下不支持“JPG”作为扩展名,而“jpg”支持。
要添加其它资源类型,请编辑(如果不存在则创建)项目根目录(包含 node_modules 的文件夹)的 rn-cli.config 文件。在此文件中,编辑 getAssetExts() 以返回你想要包含的其它资源类型。
'use strict';
const blacklist = require('react-native/packager/blacklist');
const path = require('path');
module.exports = {
getProjectRoots() {
return this._getRoots();
},
getAssetRoots() {
return this._getRoots();
},
getAssetExts() {
return [
'obj',
'mtl',
'JPG',
'vrx',
'hdr',
'gltf',
'glb',
'bin',
'arobject',
'gif',
];
},
getBlacklistRE() {
return blacklist();
},
_getRoots() {
// match on either path separator
if (__dirname.match(/node_modules[\/\\]react-native[\/\\]packager$/)) {
// packager is running from node_modules of another project
return [path.resolve(__dirname, '../../..')];
} else if (__dirname.match(/Pods\/React\/packager$/)) {
// packager is running from node_modules of another project
return [path.resolve(__dirname, '../../..')];
} else {
return [path.resolve(__dirname, '.')];
}
},
getTransformModulePath() {
return require.resolve('react-native/packager/transformer');
},
};