#intersect()は3種類ある?
enchant.jsを読むと以下のように書いてある。
enchant.js
var _intersectBetweenClassAndInstance = function(Class, instance) {
var ret = [];
var c;
for (var i = 0, l = Class.collection.length; i < l; i++) {
c = Class.collection[i];
if (instance._intersectOne(c)) {
ret.push(c);
}
}
return ret;
};
var _intersectBetweenClassAndClass = function(Class1, Class2) {
var ret = [];
var c1, c2;
for (var i = 0, l = Class1.collection.length; i < l; i++) {
c1 = Class1.collection[i];
for (var j = 0, ll = Class2.collection.length; j < ll; j++) {
c2 = Class2.collection[j];
if (c1._intersectOne(c2)) {
ret.push([ c1, c2 ]);
}
}
}
return ret;
};
インスタンス同士だけではなく、クラスとクラスの当たり判定やクラスとインスタンスの当たり判定があると書かれている。
_intersectBetweenClassAndInstanceでは第一引数のクラスのコレクション一つ一つに対して、第二引数のインスタンスと当たり判定を行い、当たっているオブジェクトの配列を返している。
_intersectBetweenClassAndClassでは第一引数のクラスのコレクションそれぞれに対して、第二引数のクラスのコレクションそれぞれと当たり判定を行い、当たっているオブジェクトの配列を返している。
#Example
Class1のインスタンスとClass2のインスタンスが当たったら画面から消すExampleは以下のようになる。
example
//クラス同士の当たり判定
Class1.intersect(Class2).forEach(function(pair){
//pair[0]: Class1のインスタンス
//pair[1]: Class2のインスタンス
scene.removeChild(pair[0]);
scene.removeChild(pair[1]);
});