У меня такая ситуация: надо определить коллизию двух клипов неправильной формы. метод hitTest () не помогает. Нашол в нете кое-какой код но он не работает, и заодно обьясните как-работает getBounds(). Вот кодик:
// Создаем метод, по стилю использования схожий с hitTest()
MovieClip.prototype.myHitTest = function(clip:MovieClip, n:Number):Boolean {
// Параметр n задает размер "пикселя". Он необязателен - по умолчанию для
// него используем значение 2
if (n == undefined) {
var n:Number = 2;
}
// Определяем координаты граничных точек клипов. Так как в дальнейшем
// придется использовать их как параметры метода hitTest(), то вычислены они
// должны быть в системе координат _root.
var coord1:Object = this.getBounds(_root);
var coord2:Object = clip.getBounds(_root);
// Вычисляем площади клипов. У которого из них она окажется меньше,
// относительно того определяем коллизию
var squarel:Number = Math.abs((coord1.xMax-coord1.xMin)*(coord1.yMax-coord1.yMin));
var square2:Number = Math.abs((coord2.xMax-coord2.xMin)*(coord2.yMax-coord2.yMin));
var coord:Object = square1>square2 ? coord2 : coord1;
// Перебираем все "пиксели"
for (var i = coord.xMin+n/2; i<=coord, xMath; i += n) {
for (var j = coord.yMin+n/2; j<=coord.yMax; j += n) {
// Если один и тот же "пиксель" занят в обоих клипах, возвращаем true
if (((clip.hitTest(i, j, true) ? 1 : 0)+(this.hitTest(i, j, true) ? 1 : 0)) == 2) {
return true;
}
}
// Если общих "пикселей" не обнаруживается, возвращаем false
return false;
}
};
onEnterFrame=function(){
if (_root.ball.myHitTest(_root.ball2)) {trace ("Пересеклось")}
}
Флешеры, отзовитес!