`
hacker47
  • 浏览: 339067 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

AS3基础:图片绕中心点旋转(Matrix)

 
阅读更多



 接上一篇:

 

package  
{
	import flash.display.Bitmap;
	import flash.display.DisplayObject;
	import flash.display.Loader;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.geom.Matrix;
	import flash.media.Sound;
	import flash.net.NetStream;
	import flash.net.URLRequest;
	import flash.utils.Timer;
	
	/**
	 * ...
	 * @author hacker47
	 */
	public class Main extends MovieClip 
	{
		private var loader:Loader;
		private var url:String = "1.jpg";
		private var bitmap:Bitmap;
		private var matrix:Matrix;
		private var angle:Number = 0;
		private var speed:Number = .05;
		
		public function Main() 
		{
			if (stage) init();
			else
				addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void {
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			loader.load(new URLRequest(url));

		}
		

		private function onComplete(e:Event):void {
			bitmap = e.target.content as Bitmap;

			bitmap.x = (stage.stageWidth - bitmap.width) / 2;
			bitmap.y = (stage.stageHeight - bitmap.height) / 2;
			addChild(bitmap);
			
			matrix = bitmap.transform.matrix;
			
			//将图片旋转30度
			//rotate(bitmap, 30, bitmap.width / 2, bitmap.height / 2, matrix);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, running1);
			
		}
		
		
		private function running(e:Event = null):void {
			bitmap.x = (stage.stageWidth - bitmap.width) / 2;
			bitmap.y = (stage.stageHeight - bitmap.height) / 2;
			rotate(bitmap, angle, bitmap.width / 2, bitmap.height / 2, matrix);
			angle += speed;
			//trace(angle);
		}
		
		private function running1(e:MouseEvent):void {
			bitmap.x = (stage.stageWidth - bitmap.width) / 2;
			bitmap.y = (stage.stageHeight - bitmap.height) / 2;
			
			var dy:Number = mouseY - (bitmap.y + bitmap.height / 2);
			var dx:Number = mouseX - (bitmap.x + bitmap.width / 2);
			//bitmap.rotation = Math.atan2(dy, dx) * 180 / Math.PI;
			
			rotate(bitmap, Math.atan2(dy, dx), bitmap.width / 2, bitmap.height / 2, matrix);
		}
		
		private function rotate(dis:DisplayObject,rotation:int,px:int,py:int,srcMatrix:Matrix):void {
			var tx:int = dis.x + px;
			var ty:int = dis.y + py;
			
			var m:Matrix = srcMatrix.clone();
			m.translate(-tx, -ty);
			m.rotate(rotation * 180 / Math.PI);
			m.translate(tx, ty);
			dis.transform.matrix = m;
			
		}
		
	}

}

 

  • 大小: 51.9 KB
0
0
分享到:
评论

相关推荐

    AS3.0 图片点击缩放、旋转移动

    同样,我们可以设置旋转中心点来实现基于特定点的旋转: ```actionscript var rotateAngle:Number = 45; // 旋转角度,以度为单位 var rotationCenterPoint:Point = zoomCenterPoint; function handleImageClick...

    Visual Basic 6.0 任意角度旋转图片

    - 设置旋转中心:通常选择图片的中心点。 - 计算旋转矩阵。 - 将图片的每个像素映射到旋转后的坐标:遍历图片的每个像素,使用旋转矩阵进行坐标转换。 - 使用Graphics对象的DrawImage方法,将映射后的像素绘制到新的...

    flash as3 多点触控-缩放-旋转-滑动.zip

    在给定的压缩包"flash as3 多点触控-缩放-旋转-滑动.zip"中,包含了使用AS3实现多点触控功能的实例,这些功能包括触控缩放、旋转和滑动,适用于触摸屏设备。 首先,让我们深入理解多点触控的基本概念。多点触控允许...

    VB 旋转区域 旋转图像

    在这个例子中,每次点击Button1,图像就会围绕其中心点旋转90度。注意,实际应用中可能需要考虑更复杂的逻辑,例如保存旋转状态、设置旋转角度限制、平滑旋转效果等。 此外,如果希望只旋转图片而保持窗体不变,...

    像素级的VB图片处理,图片旋转与放大和复制

    这段代码将图片逆时针旋转45度,旋转中心为图片的中心点。 3. 图片放大: 图片放大通常通过调整`DrawImage`方法的参数实现。传入的矩形参数决定了图片在画布上的显示大小。例如,若要将图片放大两倍,可以这样...

    VB 360度快速旋转图片

    通常选择图片的中心点,可以使用`Width`和`Height`属性获取图片尺寸,并计算中心坐标。 ```vb Dim centerX As Integer = img.Width / 2 Dim centerY As Integer = img.Height / 2 ``` 4. **创建旋转矩阵**:使用`...

    利用opencv库对图片旋转量进行估计

    center = (img_width / 2, img_height / 2) # 图像中心点 rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1.0) ``` 在这里,`1.0`是缩放因子,保持原始图像尺寸不变。`getRotationMatrix2D`函数接受三...

    vb 图像旋转 任意角度

    1. **定义旋转中心**:确定图像旋转的基准点,这通常是图像的中心点或自定义点。 2. **创建旋转矩阵**:根据旋转角度创建一个2x2的旋转矩阵。这个矩阵包含了旋转的角度信息,用于坐标变换。 3. **应用矩阵变换**:...

    图形旋转变换

    在二维空间中,一个图形的旋转是围绕一个固定点(称为旋转中心)进行的。旋转的角度决定了图形转动的程度,可以是任意角度,但通常以度数或弧度为单位。在解析几何中,我们可以使用坐标系中的坐标来表示点的位置,并...

    如何旋转图像?(27KB)...

    3. **定义旋转中心**:为了旋转图像,你需要指定旋转的中心点,通常是你希望图像保持不变的位置,如图像的中心: ```vb Dim centerPoint As New PointF(img.Width / 2, img.Height / 2) ``` 4. **设置旋转角度**...

    TransformHalloween免费版

    4. 旋转功能:用户可以通过拖动图片的一个旋转手柄(通常是图片中心或一个可配置的点)来旋转图片。实现此功能需要计算鼠标的旋转角度,并应用到图片的rotation属性上。 5. 变换坐标系统:类库可能会处理图片变换时...

    用VB实现字体的旋转VB源码(4KB)...

    `RotateAt` 方法用于设置旋转角度和旋转中心,然后将这个旋转矩阵应用到`Graphics` 对象的变换上。最后,用`Transform = Nothing` 来清除变换,恢复默认坐标系。 在实际应用中,你可能需要根据用户输入或特定需求...

    图像旋转源代码

    在图像处理领域,图像旋转是一项基础且重要的操作。它广泛应用于照片编辑、图像识别、视频处理等场景。本文将深入探讨图像旋转的原理,并提供相关的源代码实现。 图像旋转的基本原理是利用矩阵变换来实现。在二维...

    图像几何变换

    3. **旋转(Rotation)**:旋转图像使其围绕某个点(通常为图像中心)转动一定角度。这需要计算新的坐标系,并构建旋转矩阵。在C#中,可以使用Math.Sin和Math.Cos函数配合旋转角度来完成。 4. **剪切(Shear)**:...

    360度游戏摇杆程序AS3.0

    摇杆的核心组成部分包括一个中心点(通常称为“摇杆基座”)和一个可移动的指针(“摇杆头”)。在AS3.0中,这两个部分可能被定义为两个不同的显示对象实例,如Sprite或MovieClip。它们的位置坐标分别表示摇杆的当前...

    GIS画圆的as源码

    在GIS(地理信息系统)中,画圆是一种常见的操作,它涉及到地图上的点定位、距离计算以及投影坐标系的转换。本篇文章将详细讲解如何在AS(ActionScript)中实现GIS画圆的功能,同时关注在Flex环境中如何处理投影坐标...

    as3.0实现的一个碰撞类小游戏

    结合`Matrix`类可以进行对象的旋转和缩放,从而实现对不同方向和大小的碰撞检测。 此外,AS3.0的面向对象特性使得游戏设计更加模块化。每个游戏对象,如球体,都可以被封装为一个类,包含其属性(如位置、速度、...

    flex coverflow 效果示例

    开发者需要计算每个元素相对于中心点的3D位置,并通过Matrix3D应用这些变换。当用户滚动时,更新这些变换参数,以实现元素的动态旋转效果。 4. **事件处理与动画**: 为了响应用户的滚动操作,开发者需要监听鼠标...

    图象的水平和垂直翻转(8KB)...

    这段代码首先创建了一个Graphics对象,然后定义了一个翻转矩阵,使用`RotateAt`方法在图像中心点进行180度旋转,实现水平翻转。之后,将翻转矩阵应用于Graphics对象,最后用DrawImage方法绘制翻转后的图像。 对于...

    C# for CSDN 乱七八糟的看不懂

    C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 ...

Global site tag (gtag.js) - Google Analytics