Для чего-то подобного (игнорируя перетаскивание, для которого у вас есть несколько хороших примеров), вы настраивали все это ранее.
Скажите, что ваша цель - построить дом.Здесь вы должны собрать части заранее и сохранить конечную позицию и поворот в XML или что-то подобное.Когда вы перетаскиваете фигуры в игре, вам просто нужно проверить, достаточно ли она близка к конечной позиции, и если это так, просто привязать ее к конечной позиции.Вы можете работать во вращении достаточно легко (хотя я бы оставил углы равными 45 градусам для упрощения).
В качестве идеи для положения:
private var m_finalPos:Point = new Point( 10.0, 10.0 );
private var m_snapDist:Number = 100.0;
private function _onDrop( e:MouseEvent ):void
{
// get the distance squared (quicker, and we don't really care about the distance)
var diffX:Number = this.m_finalPos.x - this.x;
var diffY:Number = this.m_finalPos.y - this.y;
var distSq:Number = ( diffX * diffX ) + ( diffY * diffY );
// if we're close enough, snap to the final position
if( distSq < this.m_snapDist )
{
this.x = this.m_finalPos.x;
this.y = this.m_finalPos.y;
}
}
Опустите snapDist, чтобы сделать его сложнее.