Three.js: 处理数据网址时避免设置crossOrigin

创建于 2012-02-10  ·  3评论  ·  资料来源: mrdoob/three.js

问候,

在这段代码中,我们在处理数据url时可以避免设置d.crossOrigin吗?

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

您可以像这样添加支票:

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

这可以解决问题。 否则,Chrome 17会为数据URL抛出“跨域资源共享”策略拒绝的跨域图像加载。

T.

Question

最有用的评论

嗯...我认为您不应该在这种情况下使用ImageUtils.loadTexture。 只需执行以下操作:

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

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

所有3条评论

嗯...我认为您不应该在这种情况下使用ImageUtils.loadTexture。 只需执行以下操作:

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

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

完美的工作,谢谢!

@mrdoob ,感谢上面的示例!

此页面是否有帮助?
0 / 5 - 0 等级