Таким образом, поскольку 3D слои получили введены, AS3 поддерживает следующие функции:AS3: локальный 2D-глобальный 3D?
local3DtoGlobal(point3D:Vector3D):Point
и
globalToLocal3D(point:Point):Vector3D
первое одно преобразование точку внутри 3D трансформированного слоя к глобальной 2D а вторая возвращает локальные координаты 2D-сцены, проецируемой на трехмерную плоскость (координата z для Vector3D будет равна 0).
Что мне нужно, однако, что-то вроде
local2DToGlobal3D(point:Point):Vector3D
, который принимает 2D локальные координаты (в пределах преобразованного слоя 3D) и возвращает Vector3D, представляющий позицию в глобальном 3D-пространстве.
пример:
//_foo3D:MovieClip is a MovieClip with a 3D rotation applied to it, child of the stage
//_bar:MovieClip is some test MovieClip, child of the stage
function asdf(){
var p:Point = new Point(50,50);
_foo3D.graphics.beginFill(0,1);
_foo3D.graphics.drawCircle(p.x, p.y, 50);
_foo3D.graphics.endFill();
var p3D:Vector3D = _foo3D.FUNCTIONINEED(p);
_bar.x = p3D.x;
_bar.y = p3D.y;
_bar.z = p3D.z;
//the movieClip _bar should now optically lie over the circle drawn within _foo3D
}
, как это сделать? надеюсь, что проблема понятна. благодаря!