Three.js: Избегайте настройки crossOrigin при работе с URL-адресами данных

Созданный на 10 февр. 2012  ·  3Комментарии  ·  Источник: mrdoob/three.js

Привет,

Можем ли мы избежать установки d.crossOrigin в этом фрагменте кода, когда имеем дело с URL-адресом данных?

THREE.ImageUtils = {crossOrigin: "",loadTexture: function(a, b, c) {
        var d = new Image, e = new THREE.Texture(d, b);
        d.onload = function() {
            e.needsUpdate = !0;
            c && c(this)
        };
        d.crossOrigin = this.crossOrigin;
        d.src = a;
        return e

Вы можете добавить чек так:

if( a.substr(0,4) != "data" )
  d.crossOrigin = this.crossOrigin;

это трюк. В противном случае Chrome 17 выдает загрузку изображения из разных источников, запрещенную политикой совместного использования ресурсов из разных источников для URL-адреса данных.

Т.

Question

Самый полезный комментарий

Хм ... Думаю, вам не стоит использовать ImageUtils.loadTexture в этом случае. Просто сделай это:

var image = document.createElement( 'img' );
image.src = dataurl;

var texture = new THREE.Texture( image );
texture.needsUpdate = true;

Все 3 Комментарий

Хм ... Думаю, вам не стоит использовать ImageUtils.loadTexture в этом случае. Просто сделай это:

var image = document.createElement( 'img' );
image.src = dataurl;

var texture = new THREE.Texture( image );
texture.needsUpdate = true;

Отлично работает, спасибо!

@mrdoob , спасибо за образец выше!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги