8.7.1 旋转和坐标系
2008-05-04 09:46
120 查看
使用Matrix.rotate()方法可以实现对象的旋转。旋转是围绕显示对象父容器的坐标系原点进行的。例8-8将利用旋转变形,制作一段模拟地球和月球运动的动画。
(1)创建一个AS3项目,舞台尺寸550×400,帧率20。在舞台上建立一个空MovieClip实例earth_system,在earth_system内部,建立两个圆形MovieClip对象,分别命名为earth和moon。适当调整moon对象同earth对象的大小,使其符合演示需要。总体布置如图所示:
舞台对象的关系请参考图:
(2)在代码编辑器中,输入以下代码,创建动画入口:
var transtimer:Timer = new Timer(50, 150);
transtimer.addEventListener("timer", transtimerHandler);
transtimer.addEventListener("timerComplete", transComplete);
earth_system.x=345;
earth_system.y=5;
transtimer.start();
function transtimerHandler(event:TimerEvent):void {
//动画代码编写入口
}
function transComplete(event:TimerEvent):void {
transtimer.reset();
transtimer.start();
}
这段代码中,在定时器启动前,将earthsystem对象的位置移动到舞台中上方。这样做仅仅是为了动画的美观,并不涉及其他问题。
(3)创建一个函数rootanim来控制earth_system的公转。因为earth_system就直接处在舞台上,其父容器就是舞台本身,所以根据矩阵变换的知识可知,对其进行旋转将是围绕舞台左上角进行的。在本例的舞台布置中,恰好就是星系的中心。
var myMatrix:Matrix=earth_system.transform.matrix;
transtimer.start();
function rootanim(){
myMatrix.rotate(Math.PI/3650);
earth_system.transform.matrix=myMatrix;
}
function transtimerHandler(event:TimerEvent):void {
//动画代码编写入口
rootanim();
}
(4)运行这段程序,可以看到地球带着月球开始了公转。其旋转变换及坐标系关系如图所示:
(1)创建一个AS3项目,舞台尺寸550×400,帧率20。在舞台上建立一个空MovieClip实例earth_system,在earth_system内部,建立两个圆形MovieClip对象,分别命名为earth和moon。适当调整moon对象同earth对象的大小,使其符合演示需要。总体布置如图所示:
舞台对象的关系请参考图:
(2)在代码编辑器中,输入以下代码,创建动画入口:
var transtimer:Timer = new Timer(50, 150);
transtimer.addEventListener("timer", transtimerHandler);
transtimer.addEventListener("timerComplete", transComplete);
earth_system.x=345;
earth_system.y=5;
transtimer.start();
function transtimerHandler(event:TimerEvent):void {
//动画代码编写入口
}
function transComplete(event:TimerEvent):void {
transtimer.reset();
transtimer.start();
}
这段代码中,在定时器启动前,将earthsystem对象的位置移动到舞台中上方。这样做仅仅是为了动画的美观,并不涉及其他问题。
(3)创建一个函数rootanim来控制earth_system的公转。因为earth_system就直接处在舞台上,其父容器就是舞台本身,所以根据矩阵变换的知识可知,对其进行旋转将是围绕舞台左上角进行的。在本例的舞台布置中,恰好就是星系的中心。
var myMatrix:Matrix=earth_system.transform.matrix;
transtimer.start();
function rootanim(){
myMatrix.rotate(Math.PI/3650);
earth_system.transform.matrix=myMatrix;
}
function transtimerHandler(event:TimerEvent):void {
//动画代码编写入口
rootanim();
}
(4)运行这段程序,可以看到地球带着月球开始了公转。其旋转变换及坐标系关系如图所示:
相关文章推荐
- Android canvas rotate():平移旋转坐标系至任意原点任意角度-------附:android反三角函数小结
- OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器
- [bzoj2989]数列_KD-Tree_旋转坐标系
- 【bzoj2989】数列 KD-tree+旋转坐标系
- 绕任意轴旋转的矩阵推导 (D3D 左手坐标系)
- 论坐标系的旋转姿势
- openGL按照载体自身坐标系旋转
- 点旋转和坐标系旋转
- 坐标系之间的旋转平移变换与对应变换矩阵的关系
- 坐标系之间的旋转平移变换与对应变换矩阵的关系
- 关于在坐标系中旋转平移物体的理论基础解析
- CORDIC之线性坐标系旋转
- IOS开发——旋转(CGAffineTransformMakeRotation)之后view和子view坐标系的变化
- Android canvas rotate():平移旋转坐标系至任意原点任意角度-------附:android反三角函数小结
- maya和Unity中的坐标系旋转
- 关于图形数学的基本问题,沿任意轴旋转,或者旋转坐标系的推导过程
- 如何通过旋转坐标轴计算坐标系A中的点到坐标系B中的点的变换T
- OpenGL——点的绘制(使用OpenGL来绘制可旋转坐标系的螺旋线)
- OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图
- 【BZOJ3707】圈地 计算几何 旋转坐标系