Three.js: Evite definir crossOrigin ao lidar com urls de dados

Criado em 10 fev. 2012  ·  3Comentários  ·  Fonte: mrdoob/three.js

Saudações,

neste trecho de código, podemos evitar definir d.crossOrigin quando estamos lidando com um url de dados?

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

Você pode adicionar um cheque como este:

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

isso faz o truque. Caso contrário, o Chrome 17 lança um carregamento de imagem de origem cruzada negado pela política de compartilhamento de recursos de origem cruzada para um url de dados.

T.

Question

Comentários muito úteis

Hmm ... Acho que você não deve usar ImageUtils.loadTexture nesse caso. Basta fazer isso:

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

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

Todos 3 comentários

Hmm ... Acho que você não deve usar ImageUtils.loadTexture nesse caso. Basta fazer isso:

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

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

Funciona perfeitamente, obrigado!

@mrdoob , obrigado pelo exemplo acima!

Esta página foi útil?
0 / 5 - 0 avaliações