0
我有以下2個文件,第一個物理/ world.js:有什麼問題,需要在文件
var p2 = require('p2');
var pkg_world = require('../redis_pkgs/pkg_world.js');
var redisObjectMap = new Array(); // redis_id - world_id
var world = new p2.World({
gravity:[0,-9.82]
});
//el piso
var groundShape = new p2.Plane();
var groundBody = new p2.Body({
mass:0
});
groundBody.addShape(groundShape);
world.addBody(groundBody);
initWorld = pkg_world.initWorld(); //traigo el estado inicial de redis
initWorld.done(function(){
redisObjectMap = initWorld.valueOf();
});
var timeStep = 1/60;
setInterval(function(){
world.step(timeStep);
pkg_world.setWorld(world,redisObjectMap);
/* console.log(world.bodies[0].id);
console.log(world.bodies.length);*/
},1000 * timeStep);
module.exports = world;
和redis_pkgs/pkg_world.js:
var client = require('../redisClient.js');
var p2 = require('p2');
var world = require('../Physics/world.js');
var q = require('q');
var D_object = require('../schemas/d_object_schema.js');
module.exports = {
initWorld: function(){
return q.Promise(function(resolve,reject){
var result = Array();
client.hvals('d_object',function(err,obj){
if(err){
reject(err);
}else{
var tmp;
obj.forEach(function(o){
tmp = JSON.parse(o);
var circleBody = new p2.Body({
mass:5,
position:[tmp.position.x,tmp.position.y]
});
var circleShape = new p2.Circle({radius:1});
circleBody.addShape(circleShape);
world.addBody(circleBody);
result[tmp.id] = world.bodies.length; // Mapeo al id del mundo asi despues acutualizo
});
resolve(result);
}
});
});
},
setWorld: function(redisObjectMap){
return q.Promise(function(resolve,reject){
redisObjectMap.forEach(function(world_id){
var object = new D_object({
id:redisObjectMap.indexOf(world_id),
position:{
x:world.bodies[world_id].position[0],
y:world.bodies[world_id].position[1]
}
});
console.log(JSON.stringify(object));
client.hset("d_object",object.id,JSON.stringify(object));
});
resolve();
});
}
}
的問題是,在第二文件它告訴我,world.addBody不是一個函數,但我從第一個文件中導出世界,這是一個函數,所以我不明白什麼即時通訊做錯了什麼,我是不是從module.exports瞭解什麼是
我們是否假定第一個文件是Physics/world.js?每個部分的文件名可能有幫助。 –
是的,抱歉,我忘了。我編輯它 –
我看到通告參考。另外 - 你在world.js中用「world」作爲參數構建initWorld,然後將其導入到pkg_world中。沒有循環引用,並在pkg_world中將世界作爲該參數是不合理的?也許我在這裏錯過了一些東西。 –