Three.js: Évitez de définir crossOrigin lorsque vous traitez avec des URL de données

Créé le 10 févr. 2012  ·  3Commentaires  ·  Source: mrdoob/three.js

Les salutations,

dans ce morceau de code, pouvons-nous éviter de définir d.crossOrigin lorsque nous avons affaire à une URL de données?

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

Vous pouvez ajouter un chèque comme celui-ci:

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

cela fait l'affaire. Sinon, Chrome 17 lance un chargement d'image cross-origin refusé par la politique de partage de ressources cross-origin pour une URL de données.

T.

Question

Commentaire le plus utile

Hmm ... Je pense que vous ne devriez pas utiliser ImageUtils.loadTexture dans ce cas. Faites simplement ceci:

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

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

Tous les 3 commentaires

Hmm ... Je pense que vous ne devriez pas utiliser ImageUtils.loadTexture dans ce cas. Faites simplement ceci:

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

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

Fonctionne parfaitement, merci!

@mrdoob , merci pour l'exemple ci-dessus!

Cette page vous a été utile?
0 / 5 - 0 notes