// forked from hiro_loveness's forked from: forked from: forked from: PerspectiveProjectionTest // forked from hiro_loveness's forked from: forked from: PerspectiveProjectionTest // forked from hiro_loveness's forked from: PerspectiveProjectionTest // forked from ukkr's PerspectiveProjectionTest package { import flash.display.Shape; import flash.display.Sprite; import flash.display.Graphics; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.PerspectiveProjection; import flash.geom.Point; import flash.geom.Matrix3D; public class PerspectiveProjectionTest extends Sprite { private var _pro:PerspectiveProjection; //PerspectiveProjetionクラス private var _centerPoint:Point = new Point(0,0); //消失点用のPointクラス private var _panelNum:uint =18; //プレートの数 private var _panelSize:uint = 100; //プレートのサイズ private var _ang:int = 90; //プレート角度 private var box:Sprite = new Sprite(); //プレート親ボックス private var _cx:Number =0.04; private var _cy:Number =0.05; private var sp:Sprite; public function PerspectiveProjectionTest() { //アクセスするperspectiveProjectionオブジェクト _pro = root.transform.perspectiveProjection; //視野角の遠近感の強さ _pro.fieldOfView = 140; //視点からオブジェクトまでの距離 //_pro.focalLength =200; initStage(); } private function initStage():void { for ( var i:int = 0; i < _panelNum; i++ ) { sp= new Sprite(); var g:Graphics = sp.graphics; var col:uint = Math.floor(Math.random()*0Xdddddd) g.beginFill(col, 0.8 ); g.drawRect( -_panelSize / 2, -_panelSize / 2, _panelSize,_panelSize ); g.endFill(); sp.x = Math.floor(Math.round( stage.stageWidth / _panelNum * i )); //sp.y = Math.floor(Math.round( stage.stageHeight / _panelNum * i )); sp.y = stage.stageHeight / 2+(5*i); //sp.z = (stage.stageHeight / 5)*(i*0.2); sp.rotationY = _ang; box.addChild( sp ); } addChild(box); //box.rotationY =_ang; addEventListener( Event.ENTER_FRAME, enterFrameHandler ); } //ここでマウスに消失点を追従 private function enterFrameHandler( e:Event ):void { _centerPoint.x += (mouseX-_centerPoint.x)*_cx; _centerPoint.y += (mouseY-_centerPoint.y)*_cy; z =_centerPoint.y/8; _pro.projectionCenter = _centerPoint; } } } forked from: forked from: forked from: forked from: PerspectiveProjectionTest