12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 'use strict';
- /**
- * @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);
- });
- }
- };
|