1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /**
- * @author thespite / http://clicktorelease.com/
- */
- THREE.ImageBitmapLoader = function (manager) {
- this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
- this.options = {};
- };
- THREE.ImageBitmapLoader.prototype = {
- constructor: THREE.ImageBitmapLoader,
- setOptions: function setOptions(options) {
- this.options = options;
- return this;
- },
- load: function load(url, onLoad, onProgress, onError) {
- if (url === undefined) url = '';
- if (this.path !== undefined) url = this.path + url;
- var scope = this;
- var cached = THREE.Cache.get(url);
- if (cached !== undefined) {
- scope.manager.itemStart(url);
- setTimeout(function () {
- if (onLoad) onLoad(cached);
- scope.manager.itemEnd(url);
- }, 0);
- return cached;
- }
- fetch(url).then(function (res) {
- return res.blob();
- }).then(function (res) {
- return createImageBitmap(res, scope.options);
- }).then(function (res) {
- THREE.Cache.add(url, res);
- if (onLoad) onLoad(res);
- scope.manager.itemEnd(url);
- }).catch(function (e) {
- if (onError) onError(e);
- scope.manager.itemEnd(url);
- scope.manager.itemError(url);
- });
- }
- };
|