小编gma*_*man的帖子

Three.js并加载跨域图像

我知道以前曾经问过这个问题,而且我已经读过我能找到的问题和答案,但没有任何效果.

我在本地服务器(IIS)上运行它.我正在尝试从imgur加载图像,然后使用代码将其用作对象的纹理:

var savedImage = /[^?]*$/.exec(location.search)[0];
if (savedImage != "") { savedImageLoad("http://i.imgur.com/" + savedImage + ".jpg"); };

    function savedImageLoad(image) {
        var mapOverlay = new THREE.ImageUtils.loadTexture(image);
        sphere.material = new THREE.MeshBasicMaterial({map: mapOverlay, needsUpdate: true});;
        sphere.geometry.buffersNeedUpdate = true;
        sphere.geometry.uvsNeedUpdate = true;
    }
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:

Uncaught SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The cross-origin image at http://i.imgur.com/uBD0g95.jpg may not be loaded.
Run Code Online (Sandbox Code Playgroud)

我已尝试THREE.ImageUtils.crossOrigin = "anonymous";在我的代码开头,最后和其他各个方面放置或改变一些.我添加了一个web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" …
Run Code Online (Sandbox Code Playgroud)

javascript cross-domain three.js

36
推荐指数
2
解决办法
4万
查看次数

在不使用CMake时执行make make命令

我看到这是同一个问题

在执行之前制作cmake打印命令

但这个答案对我不起作用.我猜这个答案只适用于cmake.没有cmake有什么选择?

注意试过这些

make VERBOSE=1 target
make target VERBOSE=1
VERBOSE=1 make target
make V=1 target
make target V=1
V=1 make target
make -V target
make -v target
Run Code Online (Sandbox Code Playgroud)

他们都没有工作.

make -v返回

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
Run Code Online (Sandbox Code Playgroud)

makefile

33
推荐指数
1
解决办法
5万
查看次数

如何在mercurial中还原1个或多个已提交的文件,但不是整个变更集

说我有文件File_A,File_BFile_C.我编辑File_AFile_B故意,但File_C我刚刚添加了一些我不打算提交的调试代码.然后偶然我做了

hg commit -m "comment"
Run Code Online (Sandbox Code Playgroud)

如何恢复/回滚/退出File_C?基本上我很高兴能够去

hg update -r <oneRevBack> File_C
hg commit -m "put C back"
Run Code Online (Sandbox Code Playgroud)

但更新不采用过滤器AFAIK所以它也将恢复File_AFile_B.我可以复制File_C到某个地方,hg update然后将其复制回来,但这看起来很蹩脚.有没有办法在Mercurial中直接执行此操作?

mercurial

29
推荐指数
2
解决办法
3万
查看次数

在给定"使用严格"行为的情况下,是否有未来的证明方法向本机浏览器对象添加属性?

我最近注意到,当"use strict";浏览器启用模式时,本机对象上的许多属性都会变得无法设置.

例如

function() {
  "use strict";
  var div = document.createElement("div");
  div.offsetLeft = 0;  
}();
Run Code Online (Sandbox Code Playgroud)

忽略设置offsetLeft是愚蠢的事实.这不是重点.

如果您在Chrome或Firefox中运行此操作,则会收到错误消息

Uncaught TypeError: Cannot set property offsetLeft of #<HTMLElement> which has only
a getter(…)
Run Code Online (Sandbox Code Playgroud)

删除"use strict";,错误就消失了.

所以这就是问题所在.让我们改变offsetLeft自己可能在我自己的代码中使用的东西

function createElementAndAssociateData(data) {
  "use strict";
  var div = document.createElement("div");
  div.userdata = data;  
};
Run Code Online (Sandbox Code Playgroud)

这很好用,除了新的HTML5规范发布2年后,它决定所有HTMLElements都具有userdata只读属性.突然,我的代码到处休息我用"use strict";.

随着越来越多的属性被添加到本机HTML5对象中,这是一个定时炸弹吗?

是否有一种安全的方法来使用"use strict";和向本机HTML5对象添加自定义属性,或者是否应该向本机浏览器对象添加任何类型的属性?

注意:我不认为对属性名称进行诽谤是一种可接受的解决方案.当然,我可以改变userdata,mycompanyname_myappname_userdata但这有点不重要.是否有其他解决方案,或者在严格模式下将自定义属性添加到本机HTML5对象的反模式?

javascript html5

28
推荐指数
3
解决办法
954
查看次数

如何用Threejs更改对象的zOrder?

我使用webgl渲染器创建了一个场景,我放置了多个可以选择和移动的3D对象.但是当选择一个对象时,我想绘制它的轴.将线条绘制到对象的中心没有问题,但我希望它们出现在场景中的任何其他内容之前,即使其他对象在前面也可以看到它们 - 就像在Blender中一样.

我尝试使用renderDepth参数,但我不认为我理解如何使用它,我没有得到任何结果.

谢谢您的帮助.

three.js

26
推荐指数
1
解决办法
2万
查看次数

为什么"#.id"在CSS/jQuery中是一个糟糕的选择器但它在HTML锚点中有效?

我正在使用JSDoc.它生成具有句点的ID,如

<a id=".someMethodName"></a>
Run Code Online (Sandbox Code Playgroud)

如果页面的另一部分有

<a href="#.someMethodName"></a> 
Run Code Online (Sandbox Code Playgroud)

这非常有效.单击第二个锚点滚动到第一个.

但是,document.querySelectorjQuery都不会找到锚点.

为什么浏览器本身接受此锚点但jQuery和querySelector不接受?

test("document.querySelector('#.someMethodName')", function() {
  document.querySelector('#.someMethodName');
});
test("$('#.someMethodName')", function() {
  $('#.someMethodName');
});

function test(msg, fn) {
  try {
    var result = fn();
    log(msg, result);
  } catch(e) {
    log(msg, e);
  }
}

function log() {
  var pre = document.createElement("pre");
  pre.appendChild(document.createTextNode(Array.prototype.join.call(arguments, " ")));
  document.body.appendChild(pre);
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#.someMethodName">click here to go to anchor and see errors</a>
<pre>
put
some
text
here
so
the
page
is
long
enough
that
when
we
click
the …
Run Code Online (Sandbox Code Playgroud)

html jquery css-selectors jquery-selectors fragment-identifier

26
推荐指数
2
解决办法
2019
查看次数

如何在Angular2中使用画布?

在javascript中使用canvas的常见方法是:

var canvas = document.getElementById('tutorial');
var ctx = canvas.getContext('2d');
Run Code Online (Sandbox Code Playgroud)

但是在Angular2中我无法获取HTMLCanvasElement对象,var"canvas"只获取Angular2中的HTMLElement.那么如何在Angular2中使用canvas?此外,如何使用Angular2中的第三方javascript使用TypeScript语言?

javascript html5-canvas typescript angular

26
推荐指数
1
解决办法
3万
查看次数

检测THREE.js中的点击对象

我有一个THREE.js场景,其中出现了很多元素,我需要检测用户点击的对象.

到目前为止我所做的是以下内容.相机不会移动太多 - 它只会将垂直位置改变一个有限的数量,始终朝向同一点.我的近似方法如下:

  • 如果相对于画布的点击,我会获取坐标
  • 我通过简单的重新缩放将它们转换为webGL场景中的水平和垂直坐标,并添加一个足够远的Z坐标.
  • 我从上面的点开始采用水平射线,由THREE.Ray()构建
  • 我使用ray.intersectObjects()来查找沿光线的第一个元素.

这种方法大致有效,但有时距离实际点几个像素.

是否有更可靠的技术来找出用户点击的对象?

javascript three.js

25
推荐指数
1
解决办法
4万
查看次数

如何在Three.js中移动对象?

有没有办法在Three.js中移动一个对象?

也许我应该将rotation.x,y,z转换为向量,并处理它.但我是初学者,我不知道该怎么做.

javascript three.js

24
推荐指数
3
解决办法
5万
查看次数

如何在Three.JS中创建方向性光影?

是否有可能从DirectionalLight?创建阴影?

如果我使用SpotLight然后我看到一个阴影,但如果我使用DirectionalLight它不起作用.

javascript three.js

23
推荐指数
2
解决办法
3万
查看次数