小编saw*_*ard的帖子

如何删除javascript画布

我想要一堆对象,让我们说:

function Block() {
  this.canvas;
}

blocks = [];
Run Code Online (Sandbox Code Playgroud)

我有时会指出:

block[x] = new Block();
Run Code Online (Sandbox Code Playgroud)

然后:

block.canvas = document.createElement('canvas');
Run Code Online (Sandbox Code Playgroud)

但我也想删除这个新的画布,以便有时释放内存.我只需要这样做:

block.canvas = null; (or whatever the appropriate method is)
Run Code Online (Sandbox Code Playgroud)

那么javascript会在某个阶段释放内存吗?或者是否有明确的方法来删除对象并释放内存?

谢谢!

javascript garbage-collection canvas

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

故事板预览与模拟器不同

我目前正试图解决约束(使用Xcode 6 GM种子).使用重置建议约束,一切在通用故事板和预览中都是正确的: 故事板

故事板预览

如您所见,我正在预览多种屏幕尺寸.所有这些都在中心有点的图像(图像本身占据整个视图,设置为在中心绘制).但是,当我在模拟器上加载它时,我看到:

模拟器

我不确定为什么会这样.据我所知,这些约束都是应该的:

限制

constraint_1 constraint_2 constraint_3 constraint_4

我在做什么吗?或者xcode 6中有没有错误?

提前致谢!

iphone xcode ios xcode6

6
推荐指数
1
解决办法
1271
查看次数

当物体不属于场景时,Three.js raycaster交叉点为空

我已经尝试通过创建网格并将它们作为更大几何体的一部分来改进我的项目的渲染时间,并将该单个几何体作为我添加到场景中的对象.我以为我仍然可以通过拥有原始网格阵列来管理对象的拾取,并将它们传递给raycaster.我使用了以下代码:

var vector = new THREE.Vector3( ( loc_x / window.innerWidth ) * 2 - 1, - ( loc_y / window.innerHeight ) * 2 + 1, 0.5 );
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
var objects = [];

var i = active_regions.length;
while (i--) {
  objects = objects.concat(active_regions[i].mesh_entities);
}
var intersects = raycaster.intersectObjects( objects );
if ( intersects.length > 0 ) {
  console.log("Intersection: " + intersects);
}
Run Code Online (Sandbox Code Playgroud)

所以在上面的代码中,active_regions包含原始的单个网格,我动态创建一个数组来指定我想从中选择哪些对象.不幸的是,交叉点是空的.

如果我稍微修改我的项目,以便我将所有那些mesh_entities单独添加到场景中,那么上面的代码可以工作,我可以成功选择对象.不幸的是,整个场景慢慢呈现.

对于我来说,成功检查与光线的交点有什么好方法(或一些好的方法),而不会减慢渲染速度?

谢谢!

three.js

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

标签 统计

canvas ×1

garbage-collection ×1

ios ×1

iphone ×1

javascript ×1

three.js ×1

xcode ×1

xcode6 ×1