Matrix3Dの練習
Matrix3Dの練習
@author h1ro
♥0 |
Line 43 |
Modified 2009-11-13 21:11:20 |
MIT License
archived:2017-03-09 13:45:15
ActionScript3 source code
/**
* Copyright h1ro ( http://wonderfl.net/user/h1ro )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/iXwX
*/
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;
}
}
);
}
}
}