![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2012
Сообщений: 2
|
Задача - не применяя к объекту перспективной проекции, поместить его именно в ту
позицию, куда бы он попал, будь она применена. "Погуглив", я решил, что должен помочь метод Utils3D.projectVector в связке с toMatrix3D(). Однако, улетаю куда-то в преисподнюю. Как сделать ???? Заранее благодарен. Вот класс: package { import flash.display.Sprite; import flash.geom.Matrix3D; import flash.geom.Point; import flash.geom.Vector3D; import flash.geom.Utils3D; import flash.geom.PerspectiveProjection; import flash.events.*; public class ImitPP extends Sprite { var box:Sprite; var box2:Sprite; var pp:PerspectiveProjection; var deltaFOV:int = 15; public function ImitPP():void{ if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } public function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); createBoxes(); pp = new PerspectiveProjection(); pp.projectionCenter = new Point(0,0); box.transform.perspectiveProjection = pp; stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown); } public function reportKeyDown(event:KeyboardEvent):void { deltaFOV = -deltaFOV; pp.fieldOfView += deltaFOV; if (String.fromCharCode(event.charCode) == "c") { var mat3D:Matrix3D = pp.toMatrix3D(); var v3D:Vector3D = Utils3D.projectVector(mat3D, box.transform.matrix3D.position); box.transform.matrix3D.position = v3D; } if (String.fromCharCode(event.charCode) == "a") { box.transform.perspectiveProjection = pp; } } public function createBoxes():void { box= new Sprite(); box.graphics.beginFill(0xCCCCFF); box.graphics.drawRect(0, 0, 500, 500); box.graphics.endFill(); box.x = 100; box.y = 100; box.z = 50; addChild(box); box2= new Sprite(); box2.graphics.beginFill(0x0000ff); box2.graphics.drawRect(0, 0, 100, 100); box2.graphics.endFill(); box2.x = 50; box2.y = 50; box2.z = 100; box.addChild(box2); } } } Последний раз редактировалось Gaen; 06.03.2012 в 12:21. Причина: подсветка AS3 |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|