hitTest2: function(x, y, sx, sy) {
var x2 = x + sx;
var y2 = y + sy;
if ( x < 0 || this.width <= x || y < 0 || this.height <= y ||
x2 < 0 || this.width <= x2 || y2 < 0 || this.height <= y2 ) {
return false;
}
var width = this._image.width;
var height = this._image.height;
var tileWidth = this._tileWidth || width;
var tileHeight = this._tileHeight || height;
var gx = x / tileWidth | 0;
var gy = y / tileHeight | 0;
var gx2 = x2 / tileWidth | 0;
var gy2 = y2 / tileHeight | 0;
var nx = gx2 - gx;
var ny = gy2 - gy;
if (this.collisionData != null) {
// 全ブロック判定
for( var i=0; i<=ny; i++ ) {
var gy3 = gy + i;
for( var j=0; j<=nx; j++ ) {
var gx3 = gx + j;
if( this.collisionData[gy3] && !!this.collisionData[gy3][gx3] ) {
return true;
}
}
}
return false;
} else {
// コリジョンデータがあるものだけに対応
console.log("collisionData is null");
/*
for (var i = 0, len = this._data.length; i < len; i++) {
var data = this._data[i];
var n;
if (data[y] != null && (n = data[y][x]) != null &&
0 <= n && n < (width / tileWidth | 0) * (height / tileHeight | 0)) {
return true;
}
}
*/
return false;
}
},