Matrix3Dの練習 Matrix3Dの練習 @author h1ro h1ro forked:0favorite:0lines:43license : MIT License modified : 2009-11-13 21:11:20 Embed Tweet package { import flash.display.MovieClip; import flash.display.Sprite; import flash.display.StageScaleMode; import flash.events.Event; import flash.geom.Matrix3D; import flash.geom.Vector3D; import flash.events.MouseEvent; /** * Matrix3Dの練習 * @author h1ro */ public class Matrix3DTest extends MovieClip{ private var sprite:Sprite; private var rotationDirX:Number = 1; private var rotationDirY:Number = 1; private var rotationCountX:Number; private var rotationCountY:Number; private var rotationNumX:Number=0; private var rotationNumY:Number=0; public function Matrix3DTest(){ //テスト用の四角をつくる sprite = new Sprite(); sprite.graphics.beginFill(0x000000); sprite.graphics.drawRect(0,0,100,100); sprite.graphics.endFill(); sprite.x = stage.stageWidth/2; sprite.y = stage.stageHeight/2; addChild(sprite); //まずはz軸に0を与えて3Dに変換 sprite.z = 0; //イベント追加 addEventListener(Event.ENTER_FRAME, function(e:Event):void { sprite.transform.matrix3D.prependRotation(-0.5*rotationDirX, Vector3D.X_AXIS); if (rotationCountX++ > rotationNumX ) { rotationNumX = Math.floor(Math.random() * 20) + 20; rotationDirX *= -1; rotationCountX = 0; } sprite.transform.matrix3D.prependRotation(-0.5*rotationDirY, Vector3D.Y_AXIS); if (rotationCountY++ > rotationNumY ) { rotationNumY = Math.floor(Math.random() * 20) + 20; rotationDirY *= -1; rotationCountY = 0; } } ); } } } Code Fullscreen Preview Fullscreen Matrix3D Math.floor Vector3D.Y_AXIS Vector3D.X_AXIS MouseEvent.ENTER_FRAME Math.random Number