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

Questões relacionadas

donmccurdy picture donmccurdy  ·  3Comentários

boyravikumar picture boyravikumar  ·  3Comentários

makc picture makc  ·  3Comentários

Horray picture Horray  ·  3Comentários

Bandit picture Bandit  ·  3Comentários