在 THREE.js 场景中,我有一个旋转的父对象。这个父级的子级应该在位置上锁定到他们父级的旋转,但是他们自己的旋转需要是独立的,而不是从父级继承。
一个简单的例子是让孩子们总是面对镜头。
我的尝试是“反转”父级在子级中的旋转。那是:
# render loop
render = ->
requestAnimationFrame(render)
# Rotate the parent
@parent.rotation.x += 0.01
@parent.rotation.z += 0.02
# Attempt to invert rotation of the parent, and fail :(
for child in @children
child.rotation.x = -@parent.rotation.x
child.rotation.z = -@parent.rotation.z
Run Code Online (Sandbox Code Playgroud)
这种天真的尝试的结果就在这里。黄色的小平面是灰色立方体的孩子,它们以我意想不到的方式旋转......
我想要的是这些平面始终是完美的正方形,随着立方体的旋转而移动,但它们的旋转锁定到世界,而不是父级。
那么我将如何撤消父级在子级中的旋转?我在这里错过了什么疯狂的数学?
我知道我可以在这个例子中使用点精灵,但我有更复杂的需求,最终点精灵不会做。所以我需要想办法用一个真正的 3D 对象来做到这一点。
编辑:这确实适用于每个轴。如果父级只在 X 上旋转,我可以在子级的 X 旋转上反转它,就像我想要的那样。只有 Z 相同。但是,如果我开始变化,然后将 X 和 Z 都反转,那么它就会变得松散。
假设我打开了一个浏览器,并在JavaScript中声明了一个全局变量.
window.myGlobalVar = 'Hello!';
Run Code Online (Sandbox Code Playgroud)
然后我为使用该变量的客户端渲染编译玉模板.
.foo= myGobalVar
Run Code Online (Sandbox Code Playgroud)
我编译的是这样的:
jade.compile('.foo= myGobalVar', {
client: true,
compileDebug: false
}).toString()
Run Code Online (Sandbox Code Playgroud)
这产生了这个模板功能:
function anonymous(locals) {
var buf = [];
var locals_ = (locals || {}),
myGobalVar = locals_.myGobalVar;
jade.indent = [];
buf.push("\n<div class=\"foo\">"
+ (jade.escape(null == (jade.interp = myGobalVar) ? "" : jade.interp))
+ "</div>");;
return buf.join("");
}
Run Code Online (Sandbox Code Playgroud)
哪个跑,会产生:
<div class="foo">undefined</div>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,jade编译器注意到我使用了一个变量,并强制它成为局部变量via myGobalVar = locals_.myGobalVar;,这会影响我实际想要使用的全局变量.
所以我尝试引用window.myGlobalVar和玉,然后只是阴影window.
为什么不直接传递我想要使用的每个全局?那么在运行时我不确定需要什么全局变量.我有几十个全局构造函数并明确地传递它们将需要相当重构.
那么如何以允许引用glbal varaibles的方式编译客户端jade模板呢?
更新:
我有点成功.
for (key in window) {
if (localsObject[key] == null) …Run Code Online (Sandbox Code Playgroud) 我有一个项目,编译了一些警告.这是一个使用NSDate上的一些方法的iPhone项目,它们似乎不是iPhone SDK的标题,但是完美无缺地工作.当我调用这些方法时,我收到如下警告:
NSDate警告http://beautifulpixel.com/assets/NSDate_Warnings-20090215-235727.png
那么我如何永久地静音警告,以告诉XCode"它没关系,真的."
或者我该如何更正警告?这段代码在设备上运行良好,Apple已经批准了一个使用这些相同方法的应用程序,所以我当然可以让XCode了解这些方法确实存在.
我有一个WebView可能包含似乎正在"自动链接"的数据.看起来像电子邮件地址的东西正在变得可点击,即使它现在在<a>标签内或具有onclick属性.如何禁用此自动链接?
我看过WebView文档以及WebSettings文档,但似乎没有看到任何提到这种行为的东西.
替代文字http://beautifulpixel.com/assets/5554_Fast-20100706-110228.png
我遇到了一个非常烦人的问题,UIWebView在iPhone应用程序中开发javascript .如果javascript中存在错误,它将以静默方式失败并停止执行正在运行的函数.并且在桌面浏览器中不会发生一些错误,所以一切都很好.然后我在iPhone上运行它并且因为功能在中途瘫痪而发生了巨大的失败,并且不知道为什么.然后,我慢慢地,有条不紊地注释掉各种代码行,直到没有发生灾难性故障,以便查明有问题的代码行.
这很糟糕.
那么有什么方法UIWebView可以记录或报告任何javascript错误?他们显然正在发生,我只是不知道为什么或如何,这让我的生活变得艰难.
我想问一个元素是否会响应实时事件,而不会实际触发该事件.
HTML
<div id="foo">Click me!</div>
Run Code Online (Sandbox Code Playgroud)
JS
$('#foo').live('mousedown', function() {
console.log('triggered mousedown event');
}
if ($('#foo').__willRespondToLiveEvent__('mousedown')) {
console.log('#foo is wired up properly');
}
Run Code Online (Sandbox Code Playgroud)
这是一个有点简单和人为的例子,但我正在寻找一个实际适用于__willRespondToLiveEvent__伪代码的替代品.
是否有jQuery在没有实际触发事件的情况下咳出这些信息?
我想明白之间的差别foo.bar(),并var fn = foo.bar; fn();
我把一个小例子放在一起,但我不完全理解为什么失败的那些实际上失败了.
var Dog = function() {
this.bark = "Arf";
};
Dog.prototype.woof = function() {
$('ul').append('<li>'+ this.bark +'</li>');
};
var dog = new Dog();
// works, obviously
dog.woof();
// works
(dog.woof)();
// FAILS
var fnWoof = dog.woof;
fnWoof();
// works
setTimeout(function() {
dog.woof();
}, 0);
// FAILS
setTimeout(dog.woof, 0);
Run Code Online (Sandbox Code Playgroud)
哪个产生:
在JSFiddle:http://jsfiddle.net/D6Vdg/1/
因此,看起来捕捉一个函数会导致它删除它的上下文.好.但为什么那么(dog.woof)();有效呢?
只是有点混乱,弄清楚这里发生了什么.显然有一些我没有得到的核心语义.
玩拖放,虽然我似乎拖得很好,我似乎无法放弃.
这是我的游乐场:http: //jsfiddle.net/KZ8RD/1/
基本上,dragstart和dragend可拖动节点上的事件似乎火罚款.但是我还没有在目标节点上触发任何事件.
# Source handlers
$('#source')
.on('dragstart', (e) -> log '#source dragstart', this, e)
.on('dragend', (e) -> log '#source dragend', this, e)
# Target Handlers
$('#cells td')
.on('dragenter', (e) -> log 'target dragenter', this, e)
.on('dragleave', (e) -> log 'target dragleave', this, e)
.on('dragover', (e) -> log 'target dragover', this, e)
.on('drop', (e) -> log 'target drop', this, e)???
Run Code Online (Sandbox Code Playgroud)
那么目标dragenter和drop事件需要存在哪些条件?我显然错过了其中的一些.
您好,我正在尝试使用
this.history.push({
pathname: `/search-results`,
search: `${job}$${location}`
})
Run Code Online (Sandbox Code Playgroud)
在我使用 type script 的类组件中。然而,它给了我一个错误,即“横幅”类型上不存在属性“历史”。TS2339
我可以看到功能组件的其他示例,您可以const history = useHistory();从 hook 中执行和使用 history.push。
如何在类组件中做同样的事情?
当使用 RamdalensProp时:
R.lensProp('x')
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Argument of type 'string' is not assignable to parameter of type 'never'.ts(2345)
Run Code Online (Sandbox Code Playgroud) javascript ×5
coffeescript ×2
iphone ×2
jquery ×2
objective-c ×2
typescript ×2
xcode ×2
3d ×1
android ×1
cocoa ×1
cocoa-touch ×1
events ×1
html5 ×1
prototype ×1
pug ×1
ramda.js ×1
react-router ×1
scope ×1
this ×1
three.js ×1
uiwebview ×1
webgl ×1
webview ×1