在famo.us来源中,我发现碰撞时会发出两件事:碰撞' string和一个名为collisionData的变量,如下所示:(physics / constraints / Collision.js,第112-122行):
if (this._eventOutput) {
var collisionData = {
target : target,
source : source,
overlap : overlap,
normal : n
};
this._eventOutput.emit('preCollision', collisionData);
this._eventOutput.emit('collision', collisionData);
}
我知道如何使用'碰撞'像这样的字符串:
collision.on('collision', function() {
// do stuff
};
但是,了解碰撞事件的目标和来源会非常有帮助。如何访问collisionData? collision.collisionData返回' undefined'。
答案 0 :(得分:0)
从return事件对象中获取对象:
collision.on('collision', function(data) {
// do stuff
console.log('data', data);
console.log('target', data.target);
console.log('source', data.source);
});
返回的target
和source
是您为创建碰撞而附加的正文对象的粒子。
Example Code here (未完全测试)
只需执行以下操作即可跟踪撞到谁的唯一ID。
// assuming your body is called body and body1 respectively
// also, this is just partial code.
var uniqueID = 0;
body.particle = new Circle({
radius: 50,
position: [x, y, 0]
});
body1.particle = new Circle({
radius: 50,
position: [x, y, 0]
});
body.particle.uniqueID = 'body' + uniqueID;
uniqueID += 1;
body1.particle.uniqueID = 'body' + uniqueID;
collision.on('collision', function(data) {
// do stuff
console.log('target id', data.target.uniqueID);
console.log('source id', data.source.uniqueID);
});