Three.js: Vermeiden Sie es, crossOrigin festzulegen, wenn Sie mit Daten-URLs arbeiten

Erstellt am 10. Feb. 2012  ·  3Kommentare  ·  Quelle: mrdoob/three.js

Schöne Grüße,

Können wir in diesem Code vermeiden, d.crossOrigin festzulegen, wenn es sich um eine Daten-URL handelt?

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

Sie können einen Scheck wie folgt hinzufügen:

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

das macht den Trick. Andernfalls löst Chrome 17 eine originübergreifende Bildladung aus, die von der Cross-Origin Resource Sharing-Richtlinie für eine Daten-URL abgelehnt wurde.

T. T.

Question

Hilfreichster Kommentar

Hmm ... Ich denke, Sie sollten in diesem Fall ImageUtils.loadTexture nicht verwenden. Mach das einfach:

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

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

Alle 3 Kommentare

Hmm ... Ich denke, Sie sollten in diesem Fall ImageUtils.loadTexture nicht verwenden. Mach das einfach:

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

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

Funktioniert perfekt, danke!

@mrdoob , danke für das obige Beispiel!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen