`
ongsh321
  • 浏览: 101292 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

flash绕中心点旋转(支持多次旋转)

阅读更多
package 
{

	import flash.events.Event;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.display.*;
	
	/**
	 * ...
	 * @author ongsh
	 */
	public class Main extends Sprite 
	{
		
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			var s1:Shape = new Shape();
			s1.graphics.lineStyle(0);
			s1.graphics.beginFill(0);
			s1.graphics.drawRect(0, 0, 100, 100);
			s1.graphics.endFill();
			s1.x = 200;
			s1.y = 200;
			addChild(s1);
			
			var s2:Shape = new Shape();
			s2.graphics.lineStyle(0);
			s2.graphics.beginFill(0xff0000);
			s2.graphics.drawRect(0, 0, 100, 100);
			s2.graphics.endFill();			
			s2.x = s1.x;
			s2.y = s1.y;
			addChild(s2);
			
			var angle:Number = 45;
			
			centerRotate(s2, angle);
			
			centerRotate(s1, 10);
			centerRotate(s2, 60);
		}
		
		/**
		 * 绕中心点旋转
		 * 
		 * @param	mc	元件
		 * @param	angle	角度
		 */
		public function centerRotate(mc:DisplayObject,angle:Number):void 
		{		
			var currentRotation:Number = mc.rotation;
			//获取mc不旋转时候的尺寸
			mc.rotation = 0;
			var mcWidth:Number = mc.width;
			var mcHeight:Number = mc.height;
			mc.rotation = currentRotation;
			
			//获取mc当前中心点坐标
			var pointO:Point = mc.localToGlobal(new Point(mcWidth / 2, mcHeight / 2));
			
			//旋转mc
			mc.rotation = angle;

			//获取mc旋转后中心点坐标
			var pointO2:Point = mc.localToGlobal(new Point(mcWidth / 2, mcHeight / 2));
			//平移到原来中心点O
			var p3:Point = pointO.subtract(pointO2);
			var matrix:Matrix = mc.transform.matrix;
			matrix.translate(p3.x, p3.y);
			
			mc.transform.matrix = matrix;
		}
		
		
	}
	
}

 

分享到:
评论

相关推荐

    Flash-制作旋转动画教程.doc

    - 移动椭圆的中心点到合适的位置,以便后续旋转操作更加流畅。 - **目的**:通过调整图形的位置和形状,使其更适合旋转动画的效果。 ##### 步骤 4:创建旋转图形 - **操作方法**: - 在“变形面板”上设置“旋转...

    鼠标单击出现连接线 Flash链式结构动画.rar

    在描述中提到的“环绕中心节点变换”,可能是指随着鼠标的移动,线条围绕一个中心点旋转或改变形状,增加了动画的动态性和趣味性。 实现这样的效果,我们需要掌握以下几个关键点: 1. **事件监听**:利用`...

    flash制作打字游戏

    - **本地存档**:作者提到下一个教程会涉及本地存档的RPG游戏,这提示我们可以考虑在游戏中加入保存进度的功能,让用户能够在多次游玩中持续提升自己的成绩。 - **难度调整**:通过设置不同的速度选项(慢速、中速、...

    用flash绘制太阳图形PPT学习教案.pptx

    接下来,通过设置旋转角度为45度并在“变形”面板中点击“重制选区和变形”按钮多次,可以复制并旋转红色正圆形,形成太阳的辐射状效果。 在图层1的上方创建新的图层3,用于绘制太阳的眼睛。使用椭圆工具画出黑色正...

    dexinqing1_flash源码_

    4. **数学和几何**:为了正确地排列图片以形成蜂窝状结构,开发者需要应用一些几何和数学知识,例如计算六边形的中心点、边长以及相邻六边形之间的关系。 5. **事件监听**:通过监听鼠标点击或其他用户交互事件,...

    flash8详细教程

    - **元件**:预定义的图形或动画片段,可在文档中多次重复使用。 - **实例**:元件在文档中的具体出现。 - **帧**:动画序列中的单个图像。 - **关键帧**:含有新数据的帧,用于定义动画的状态变化。 - **空关键帧**...

    3D魔方实训报告

    打乱功能则通过随机调用旋转函数多次实现。 #### 五、系统设计与实现 系统设计分为总体架构规划、三维图形子模块设计、整体翻转子模块设计、各层旋转子模块设计等多个环节。在实现过程中,重点在于DirectX库的引入...

    FLASH基础教程笔试作业.pdf

    【FLASH基础教程笔试作业知识点详解】 1. 选取工具:在Flash中,选取工具包括选择工具(V)、部分选择工具(A)和套索工具。这些工具用来选择、移动、调整对象。 2. 橡皮擦工具:使用橡皮擦工具的“擦除封闭填充”...

    闪耀的光(加代码)

    在Flash中,虽然内置的粒子系统不支持ActionScript直接控制,但我们可以通过自定义类来模拟粒子生成和行为,比如光线断裂成多个小光线,每个小光线有自己的运动轨迹和衰减速度。 5. **交互性**:将光线效果与用户的...

    随机显示文字.pdf

    * 选取任意变形工具,选中元件 1,把元件 1 的中心点移到直线的端点上 * 选中直线,按 Ctrl+T 调出变形面板,选中旋转按钮,在旋转角度中输入 60,连续单击 5 次“复制并应用变形”按钮 * 选中所有直线,按 Ctrl+B ...

    HTML5 Canvas实现的彩色肥皂泡浮起动画效果源码.zip

    这通常需要计算每个泡泡的中心点和半径,然后判断它们之间的距离是否小于两倍半径。 6. **事件监听**:为了增加互动性,可以添加鼠标事件监听,例如当用户点击泡泡时,泡泡破裂或者改变颜色。通过`addEventListener...

    VB课程设计俄罗斯方块

    方块的造型在旋转的时候存在一个公式,当然首先要判断是否满足旋转的要求,以上是一个长条型由横着变成竖立状态的旋转,我们以它的造型中的第三个小方块n(3)为中心旋转,这样,在开始运动的时候,长条形要发生旋转...

    立几画板 v6.0.5.2.zip

    可以运用多种投影(正平行投影、斜平行投影、中心投影)方式显示,可以多视图显示(主视图、左视图、顶视图等),可以把被遮挡的线自动显示为虚线,可以对每一个物件添加材质属性,可加灯光效果、彩色贴图,自然...

    利用机器视觉进行小车导航

    - IMG_sobel:再次提及sobel边缘检测算法,说明在处理图像的边缘检测过程中,可能需要多次应用该算法以获取更好的边缘信息。 3. 系统配置与编译选项: 文档还展示了在项目编译过程中如何设置编译器选项,例如预...

    机械类常用英语.docx

    13. **compound die 合模**:将多个模具组合在一起,实现一次性完成多道工序的技术。 14. **die locker 锁模器**:用来固定模具的装置,确保模具在工作过程中不会移动。 15. **pressure plate = plate pinch 压板**...

Global site tag (gtag.js) - Google Analytics