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

danieljack picture danieljack  ·  3Comentários

jlaquinte picture jlaquinte  ·  3Comentários

jack-jun picture jack-jun  ·  3Comentários

seep picture seep  ·  3Comentários

yqrashawn picture yqrashawn  ·  3Comentários