Мне все-таки удалось это сделать, и я уже написал свой класс для обнаружения столкновений, угла / столкновений и других дополнений.
Возможно, наиболее запутанным процессом является правильное выравнивание растровых изображений для сравнения.Когда при рисовании () мувиклипа в BitmapData, если мы добавимChild () соответствующий Bitmap, мы увидим, что его часть не видна.кажется, что он нарисован только от центра вправо и вниз, оставляя верхнюю и левую части в стороне от того, чтобы быть нарисованным.Решение заключается в предоставлении матрицы преобразования во втором аргументе метода draw, который выравнивает растровое изображение и заставляет его рисовать все.
Это пример функции в моем классе для создания растрового изображения для сравнения:
static public function createAlignedBitmap(mc: MovieClip, mc_rect: Rectangle): BitmapData{
var mc_offset: Matrix;
var mc_bmd: BitmapData;
mc_offset = mc.transform.matrix;
mc_offset.tx = mc.x - mc_rect.x;
mc_offset.ty = mc.y - mc_rect.y;
mc_bmd = new BitmapData(mc_rect.width, mc_rect.height, true, 0);
mc_bmd.draw(mc, mc_offset);
return mc_bmd;
}
чтобы использовать его, если вы находитесь на временной шкале, вы делаете:
className.createAlignedBitmap(myMovieClip, myMovieClip.getBounds(this))
Обратите внимание на использование getBounds, которое возвращает прямоугольник, в который встроен мувиклип.Это позволяет вычислять матрицу смещения.
Этот метод очень похож на метод, показанный здесь http://www.mikechambers.com/blog/2009/06/24/using-bitmapdata-hittest-for-collision-detection/
Кстати, если вам интересно, проверьте мой другойвопрос, который я опубликую через несколько минут.