Просмотр полной версии : Описать прямоугольник вокруг мувиклипа
Нужно описать прямоугольник вокруг мувиклипа (любого, в т.ч. битмапа с прозрачным фоном).
getBounds дает нужный набор координат - габариты мувиклипа.
Но если мувиклип повернуть, то getBounds дает габариты повернутого прямоугольника, содержащего мувиклип, что не подходит.
Нужно, чтобы прямоугольник описывал только видимый объект.
Подскажите правильный путь, плиз.
самое простое поместить мувик и прямоугольник в контейнер и вращать контейнер
мне нужен не повернутый прямоугольник, а прямоугольник вокруг повернутого мувика.
Пример здесь:
http://www.rivne-today.com/test/test_circles.html
два одинаковых мувика-круга, один повернут на 45 градусов
кодом рисуется прямоугольник(в данном случае квадрат) :
var p = mc.getBounds(mc._parent)
lineStyle(0,0,100)
moveTo(p.xMin,p.yMin)
lineTo(p.xMax,p.yMin)
lineTo(p.xMax,p.yMax)
lineTo(p.xMin,p.yMax)
lineTo(p.xMin,p.yMin)
В этом примере getBounds дает границы повернутого прямоугольника, описывающего мувик, что мне не подходит.
Как можно по-другому?
Исходник: http://www.rivne-today.com/test/test_circles.fla
public function calcVertex(o:BasicObject):Array{
var w_2:Number = o.dim_w/2;//полуширина
var h_2:Number = o.dim_h/2;//полувысота
var r:Number = Math.sqrt(w_2*w_2 + h_2*h_2);//полудиаметр
var dir:Number = Math.acos(w_2/r)*(180/Math.PI);//угол
var p:Array = new Array();//вершины обекта
p[0] = new Vector();
p[0].x = o.x+Math.cos((o.rotation-dir)*(Math.PI/180))*r;
p[0].y = o.y+Math.sin((o.rotation-dir)*(Math.PI/180))*r;
p[1] = new Vector();
p[1].x = o.x+Math.cos((o.rotation-(180-dir*2)-dir)*(Math.PI/180))*r;
p[1].y = o.y+Math.sin((o.rotation-(180-dir*2)-dir)*(Math.PI/180))*r;
p[2] = new Vector();
p[2].x = o.x+Math.cos((o.rotation-(180+dir*2)+dir)*(Math.PI/180))*r;
p[2].y = o.y+Math.sin((o.rotation-(180+dir*2)+dir)*(Math.PI/180))*r;
p[3] = new Vector();
p[3].x = o.x+Math.cos((o.rotation+dir)*(Math.PI/180))*r;
p[3].y = o.y+Math.sin((o.rotation+dir)*(Math.PI/180))*r;
return p;
}
код писал давно
Что-то не то получается.
Мне нужно описать (неповернутый) прямоугольник вокруг любого мувика, в т.ч. трансформированного матрицей искажений.
Molecula
01.02.2008, 18:59
Что-то не мойму, а почему нельзя использовать св-ва _width и _height?
Если Вы повернете мувик - Вы получите уже другие значение, это будут высота и ширина тогоСАМОГО прямоугольника, который Вам нужен.
trace(mc1._width)
mc1._rotation+=20;
trace(mc1._width)
Что-то не мойму, а почему нельзя использовать св-ва _width и _height?
Практика показала, что это совершенно не годится :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.