小编Luc*_*ann的帖子

从另一个对象更新JavaScript对象属性

我想更新一个看起来像这样的对象:

currentObject = {
    someValue : "value",
    myObject : {
        attribute1 : "foo",
        attribute2 : "bar"
    }
};
Run Code Online (Sandbox Code Playgroud)

..包含一些包含一些变化的对象,即:

updateObject = {
    myObject : {
        attribute2 : "hello world"
    }
};
Run Code Online (Sandbox Code Playgroud)

最后我想更新currentObject,以便:

currentObject.myObject.attribute2 == "hello world"
Run Code Online (Sandbox Code Playgroud)

这也应该适用于其他对象.作为一种解决方案,我考虑迭代对象并以某种方式处理命名空间.但我想知道是否通过使用像jQuery或原型这样的库来解决这个问题.

javascript properties key object

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

WebGL和HTML着色器类型

我使用以下代码在HTML文件中声明我的GLSL ES着色器程序:

<script id="shader-fs" type="x-shader/x-fragment">..shader-code..</script>
Run Code Online (Sandbox Code Playgroud)

正如在学习WebGL示例中看到的那样.一切正常,但我不明白为什么我应该使用脚本标签的type属性.我想知道指定"x-shader/x-fragment"值的位置.是谁... W3C,Khronos集团或浏览器开发商?有谁能够帮我?Tahnk你.

html shader types glsl webgl

15
推荐指数
2
解决办法
4522
查看次数

Gradle无法找到google play依赖

我尝试在我的android项目中修复对谷歌播放服务的依赖.它已经有效,但现在已经坏了.我认为这发生在Android Studio beta版和发布版之间.

这是build.gradle文件中的依赖项:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87'
}
Run Code Online (Sandbox Code Playgroud)

Android Studio能够自动完成版本字符串:'6.5.87'所以我认为它知道如何解决依赖.但它没有..这就是我所畏惧的:

  • 重新安装Android Studio(1.0.1)和Android SDK
  • 使用了几个播放服务版本(包括尝试使用'+')
  • 试图'清理'项目
  • 安装几乎所有Android SDK Manager.(包括Google Repository和Android支持存储库)
  • 将所有环境变量设置为正确的路径

但是如果我尝试执行gradle项目同步,我仍然会收到此错误:

错误:找不到com.google.android.gms:play-services:6.5.87.在以下位置搜索:file:/ C:/Users/MyName/.m2/repository/com/google/android/gms/play-services/6.5.87/play-services-6.5.87.pom file:/ C :/Users/MaName/.m2/repository/com/google/android/gms/play-services/6.5.87/play-services-6.5.87.jar https://repo1.maven.org/maven2/com/ google/android/gms/play-services/6.5.87/play-services-6.5.87.pom https://repo1.maven.org/maven2/com/google/android/gms/play-services/6.5.87 /play-services-6.5.87.jar https://oss.sonatype.org/content/repositories/snapshots/com/google/android/gms/play-services/6.5.87/play-services-6.5.87. pom https://oss.sonatype.org/content/repositories/snapshots/com/google/android/gms/play-services/6.5.87/play-services-6.5.87.jar https://oss.sonatype. org/content/repositories/releases/com/google/android/gms/play-services/6.5.87/play-services-6.5.87.pom https://oss.sonatype.org/content/repositories/releases/com /google/android/gms/play-services/6.5.87/play-services-6.5.87.jar 必需:代码:android:1.0

更新:

Gradle正在"file:/ C:/Users/MyName/.m2/repository/"中搜索,但它应该使用"file:/ C:/ Users/MyName/AppData\Local\Android\sdk\extras\google\m2repository" ..我不知道为什么这是错的,如何解决它..

更新2

我使用此解决方法修复了它:

repositories {
    def androidHome = System.getenv("ANDROID_HOME")
    maven { url "$androidHome/extras/android/m2repository/" }
    maven { url "$androidHome/extras/google/m2repository/"}
}
Run Code Online (Sandbox Code Playgroud)

但我对它并不满意.有人知道我的傻瓜有什么不对吗?

android gradle google-play-services android-studio

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

具有重叠透明图像的组的输入检测

我使用组来存储一些图像并将它们绘制到SpriteBatch.现在我想检测单击了哪个Image.因此,我向Group添加了一个InputListener,以便在触摸时获取事件.传入的InputEvent有一个方法(getTarget),它返回对被点击的Actor的引用.

如果我点击Actor的透明区域,我想忽略传入的事件.如果背后有一个Actor,我想用它代替.我想过这样的事情:

    myGroup.addListener(new InputListener() {
        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            Actor targetActor = event.getTarget();
            // is the touched pixel transparent: return false
            // else: use targetActor to handle the event and return true
        };
    });
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?我认为为方法touchDown会继续传播事件而返回false ,让我也在同一位置接收其他Actors的touchDown事件.但这似乎是一种误解......

UPDATE

PT答案解决了获得正确事件的问题.现在我有问题来检测命中像素是否透明.在我看来,我需要Image作为Pixmap来获取访问权限.但我不知道如何将图像转换为Pixmap.我也想知道这在性能和内存使用方面是否是一个很好的解决方案.

libgdx

8
推荐指数
1
解决办法
1405
查看次数

Ray和Plane的交点坐标

我有一缕射线和一架飞机.光线与飞机相交,我想知道在哪里.我如何获得这个交叉点的世界坐标?

(我的具体情况是我将屏幕坐标取消投影到相机并创建光线.飞机是场景的基础)

var vector = new THREE.Vector3( mousePosition.x, mousePosition.y, 1 );
projector.unprojectVector( vector, camera );
var ray = new THREE.Ray(
    camera.position,
    vector.subSelf( camera.position ).normalize()
);
Run Code Online (Sandbox Code Playgroud)

three.js

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

自修订版54(更新2)以来MeshFaceMaterial的问题

由于我使用的是版本54而不是版本48,因此我在脚本中得到了这个例外:

Uncaught TypeError: Cannot read property 'map' of undefined three.js:18155
bufferGuessUVType three.js:18155
initMeshBuffers three.js:17963
addObject three.js:21674
initWebGLObjects three.js:21608
render three.js:21145
...
THREE.JSONLoader.createModel three.js:9892
xhr.onreadystatechange
Run Code Online (Sandbox Code Playgroud)

我正在合并几何THREE.GeometryUtils.merge.然后我使用合并的几何来构造网格.对于这个网格我MeshFaceMaterial用来应用面部的材质.因为r54最终会出现异常.如果我使用其他材料,它可以工作......但是我不能使用原始面孔的材料.

更新:所有面都指向材质,geometry.faces[i].materialIndex但几何体不再包含材质数组.

更新:我只是想合并几何并保留他们的材料:)我认为这将是解决方案,但materialIndex面部不会更新合并.我发布这个例子以某种方式解释我需要什么.

mesh1 = new THREE.Mesh(new THREE.PlaneGeometry(2,2), new THREE.MeshBasicMaterial({ color: 0xFF0000}));
mesh2 = new THREE.Mesh(new THREE.PlaneGeometry(2,2), new THREE.MeshBasicMaterial({ color: 0x0000FF}));
mesh2.position.y = 3;
THREE.GeometryUtils.merge(mergedGeo, mesh1);
THREE.GeometryUtils.merge(mergedGeo, mesh2);
scene.add(new THREE.Mesh(mergedGeo, new THREE.MeshFaceMaterial([mesh1.material, mesh2.material])));
Run Code Online (Sandbox Code Playgroud)

我可以实现一个自己的逻辑来将合并的面链接到正确的材料,但这有点令人沮丧,因为它在早期版本中有效.

three.js

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