我有一些从Blender导出的.js文件并加载它们 THREE.JSONLoader();
我的回调:
var callback = function( geometry ) { createMesh(geometry);
Run Code Online (Sandbox Code Playgroud)
我的装货:
loader.load( "Models/sculp.js", callback );
Run Code Online (Sandbox Code Playgroud)
我的创建方法:
function createMesh(geometry){
inArr[id] = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: 0xbbbbbb} ) );
inArr[id].scale.set( 100, 100, 100 );
scene.add( inArr[id] );
id++;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想通过使用键盘更改运行时的材质(更改颜色和不透明度).
我怎样才能做到这一点?
我最近一直在阅读关于不同选择器引擎的效率.我知道jQuery使用Sizzle引擎和这个博客文章关于一些jQuery的东西提到Sizzle引擎将你的选择器拆分成一个数组然后从左到右解析.
然后,从右到左,开始用正则表达式解密每个项目.这也意味着选择器的最右侧部分应尽可能具体 - 例如,id或标签名称.
我的问题是,运行仅指定了ID 的选择器或标签名称是否更有效:
var div = $('#someId');
//OR
var div = $('div#someId');
Run Code Online (Sandbox Code Playgroud)
由于我在div#someId表单中编写CSS,我倾向于以同样的方式做我的选择器,我是否导致Sizzle执行额外的工作(假设QuerySelectorAll不可用)?
我正在玩Three.js和WebGL,并且无法按照我想要的方式获得控件.我选择尝试"滚动自己的"控件,因为Three.js的FirstPersonControls不使用指针锁.
无论如何,我从内置的FirstPersonControls中获取了大部分代码,将其转换为使用指针锁(movementX而不是pageX - offset),但是我无法平滑外观运动.
这是我的onMouseMove(originalEvent因为它是一个jquery事件使用):
onMouseMove: function(e) {
if(!document.pointerLockElement) return;
var moveX = e.originalEvent.movementX ||
e.originalEvent.mozMovementX ||
e.originalEvent.webkitMovementX ||
0,
moveY = e.originalEvent.movementY ||
e.originalEvent.mozMovementY ||
e.originalEvent.webkitMovementY ||
0;
//Update the mouse movement for coming frames
this.mouseMovementX = moveX;
this.mouseMovementY = moveY;
}
Run Code Online (Sandbox Code Playgroud)
而我Controls.update()(在每个动画帧上调用THREE.Clockdelta):
update: function(delta) {
if(this.freeze) {
return;
}
//movement, works fine
if(this.moveForward) this.camera.translateZ(-(actualMoveSpeed + this.autoSpeedFactor));
if(this.moveBackward) this.camera.translateZ(actualMoveSpeed);
if(this.moveLeft) this.camera.translateX(-actualMoveSpeed);
if(this.moveRight) this.camera.translateX(actualMoveSpeed);
/////////
//ISSUES ARE WITH …Run Code Online (Sandbox Code Playgroud) 我有使用chrome和selenium 2 webdriver的问题.问题是当我使用chromedriver启动浏览器会话时,它总是在一个小于可用屏幕宽度一半大小的窗口中启动.因为我正在对屏幕大小发生变化的页面进行测试,所以我的测试失败了,因为我试图从页面顶部拖动一个元素并将其放到页面底部的元素中.我得到一个滚动错误.但如果窗口最大化,那么我不会得到这个错误.但问题是,每次chrome通过chrome驱动程序启动一个新会话时,它总是在一个小窗口中启动.我已经探索了许多不同的选项来让浏览器开始最大化:
当我尝试:driver.manage().window().setSize()我得到这个异常:
INFO: Executing: [93debf43cf70ad3557442a7e1aee4620, setWindowSize {"windowHandle":"current","width":2560,"height":1440}]
org.openqa.selenium.UnsupportedCommandException: [GET, HEAD, DELETE]
Command duration or timeout: 16 milliseconds
Build info: version: '2.15.0', revision: '15105', time: '2011-12-08 09:56:25'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.2', java.version: '1.6.0_29'
Driver info: driver.version: RemoteWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:147)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:113)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:424)
at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.setSize(RemoteWebDriver.java:578)
at com.domo.automation.framework.utility.WebDriverUtil.startWebDriver(WebDriverUtil.java:36)
at com.domo.automation.tests.DomoWebDriverTestCase.setUp(DomoWebDriverTestCase.java:45)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113) …Run Code Online (Sandbox Code Playgroud)我在IndexedDB中存储了大量的小对象.我想让用户能够将其中一个对象存储导出到可以"下载"的文件中.
我读过这篇博客文章.其中介绍了读取数据,JSON.stringify对数据进行编码encodeURIComponent以及将其作为href可用于下载数据的链接.像这样的东西:
var transaction = db.transaction([objectstore], "readonly");
var content = [];
var objectStore = transaction.objectStore(objectstore);
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
content.push({key:cursor.key,value:cursor.value});
cursor.continue();
}
};
transaction.oncomplete = function(event) {
var serializedData = JSON.stringify(dataToStore);
link.attr("href",'data:Application/octet-stream,'+encodeURIComponent(serializedData));
link.trigger("click");
};
Run Code Online (Sandbox Code Playgroud)
这很好,除了对象存储将有数百万条记录,我不觉得这将足够高性能.有没有办法更直接地允许用户将对象存储作为文件保存(以我可以通过网页再次导入的方式).
编辑从评论中的一些注释我重写了一些如何工作,以便从中获得更多的果汁.新代码类似于:
var transaction = db.transaction([objectstore], "readonly");
var objectStore = transaction.objectStore(objectstore);
objectStore.getAll().onsuccess = function(evt) {
var url = window.URL.createObjectURL(new Blob(evt.target.results, {'type': 'application/octet-stream'}));
link.attr('href', url);
link.trigger('click');
};
Run Code Online (Sandbox Code Playgroud)
哪个会给我结果如下:
我经常在JavaScript中看到这个:
var val = (myvar / myothervar) | 0;
Run Code Online (Sandbox Code Playgroud)
其中,据我了解是许多快捷键地板在JavaScript中的值(如之一~~,和>> 0等).但是,我最近看了一段代码:
var val = Math.floor(myvar/ myothervar)|0;
Run Code Online (Sandbox Code Playgroud)
他们使用Math.floor()然后也做了一个按位OR 0.作者多次这样做,所以这不仅仅是他们曾经做过的错字.两者都有什么收获?
对于好奇,我指的代码可以在这里找到
我正在Node.js中创建一个小型专有游戏服务器管理器; 目前它通过以下方式产生游戏child_process:
var server = spawn(cmd, args, { cwd: 'something' });
Run Code Online (Sandbox Code Playgroud)
只要经理继续运行,我就可以管理命令并按照我的意愿处理孩子.但是,请考虑我的经理崩溃或关闭的可能性.然后 ,我将如何重新连接到之前生成的子进程(在管理器关闭时仍在运行)?我可以存储pidfiles尝试重新连接基于pid; 但我不知道如何获得一个child_process可以访问孩子stdio对象的对象.
我真的希望这是可以恢复的; 任何帮助表示赞赏,谢谢!
请注意:游戏服务器是专有的,一些例子是Minecraft,Source DS等.假设我无法访问服务器源.
编辑
从节点的阅读一些源代码之后child_process,它看起来,如果你在叫的选项指定属性一样stdinStream,stdoutStream或者stderrStream它应该只是打开一个套接字给它.(参见线428 - 496).那么问题是,我如何停止实际生成一个spawn,而只是根据我传递的指定pid和流来设置它的值.(因为fd是作为管道创建的,所以我应该stdinStream通过这样做fs.createWriteStream('/proc/PID/fd/0');来完成.)
我目前正在使用一个相当深的设置变量的插件(在某些地方有3-4个级别).按照普遍接受的jQuery插件模式,我已经实现了一种简单的方法,用户可以使用以下表示法动态修改设置:
$('#element').plugin('option', 'option_name', 'new_value');
Run Code Online (Sandbox Code Playgroud)
这是与我现在使用的选项方法类似的代码.
option: function (option, value) {
if (typeof (option) === 'string') {
if (value === undefined) return settings[option];
if(typeof(value) === 'object')
$.extend(true, settings[option], value);
else
settings[option] = value;
}
return this;
}
Run Code Online (Sandbox Code Playgroud)
现在考虑我有一个像这样的设置变量:
var settings = {
opt: false,
another: {
deep: true
}
};
Run Code Online (Sandbox Code Playgroud)
如果我想更改deep设置,我必须使用以下表示法:
$('#element').plugin('option', 'another', { deep: false });
Run Code Online (Sandbox Code Playgroud)
但是,因为在实践中我的设置可以是3-4级深度我觉得以下符号会更有用:
$('#element').plugin('option', 'another.deep', false);
Run Code Online (Sandbox Code Playgroud)
但是我不确定这是多么可行,也不确定如何去做.作为第一次尝试,我试图"遍历"到有问题的选项并设置它,但如果我设置我的遍历变量,它不会设置它在原始设置变量中引用的内容.
option: function (option, value) {
if (typeof (option) === 'string') {
if (value === undefined) return settings[option]; …Run Code Online (Sandbox Code Playgroud) 我有一个Django项目,设置设置为lang'pl',在每个模板中我使用本地化的日期格式,例如:
{{ item.date|date:'D, d N H:i:s e' }}
result:
Wt, 13 Lis 2012 22:00:00
Run Code Online (Sandbox Code Playgroud)
但是只有一个模板我必须使用lang'en'的格式:
Thu, 13 Nov 2012 22:00:00 GMT
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?
我正在做一个小网站,但我喜欢5-6张图片作为我的背景,我想每次刷新页面时都随意.这是我在style.css中得到的:
html {
background: url(image/l2.jpg) no-repeat center center fixed
-webkit-background-size: cover
-moz-background-size: cover
-o-background-size: cover
background-size: cover
}
Run Code Online (Sandbox Code Playgroud)