javascript - 在html中请求图片后,three.js再次请求同一张图片
问题描述
这是代码
let texture = new THREE.TextureLoader().load("http://odf9m3avc.bkt.clouddn.com/1493817789932.jpg")
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/88/three.min.js"></script>
<img class='preLoad' src = 'http://odf9m3avc.bkt.clouddn.com/1493817789932.jpg' style='display:none'>
我希望浏览器在解析html时加载图片,而不是等待three.js初始化后再请求图片。
例如
// this image only request once,other img tags use it directly
<img src='http://odf9m3avc.bkt.clouddn.com/1493817789932.jpg'>
<img src='http://odf9m3avc.bkt.clouddn.com/1493817789932.jpg'>
<img src='http://odf9m3avc.bkt.clouddn.com/1493817789932.jpg'>
但是为什么three.js请求它而不是直接使用它
这是浪费时间。
我该如何解决?
谢谢!</p>
解决方案
你可以试试这个
使用这样的 id创建img
元素,
<img src="YOUR_URL" id="preloaded-image">
加载页面后,您可以通过以下方式获取此元素,
var picture = document.getElementById( 'preloaded-image' );
现在使用这个图像创建一个 three.js 纹理,
var texture = new THREE.Texture();
texture.image = picture;
texture.needsUpdate = true;
现在你可以使用这个纹理了。我希望它不会再次请求文件(我没有测试过)
推荐阅读
- sql - 从 Postgres 中的嵌套 jsonb 数组中选择数据
- awk - 如何用双管解释 awk 命令?
- python - 为什么动态 sqlite 语句不起作用但完全相同的静态语句会起作用?
- android - Android 从 WorkManager 队列中删除工作人员或将状态从 FAILED 更改为 CANCELED
- sabre - 在 /v2/offers/shop 上选择客舱类型
- azure-devops - Devops - 链接 ARM 模板 - 使用 powershell 生成 blob 存储 SAS toekn
- tcp - 可以从“pcap”文件中找到正在侦听 TCP/IP 端口的应用程序吗?
- jquery - jquery:取消绑定一个特定的函数,留下另一个
- google-cloud-platform - 什么 gcloud 命令可以识别项目中对所有 API 具有完全访问权限的 VM 实例?
- python - django 中的自定义用户模型。唯一约束失败:users_user.username