在flex中,roation是以注册点为中心的,而一般我们的元件都是默认以左上角为注册点,而用代码是无法改变它的注册点的,平常项目中,常常需要将元件以指定位置为中心进行旋转,这一篇的小例子,是一张图片绕中心点进行旋转。
其实原理很简单,将图片添加到一个SPRITE容器中,而它的坐标,是(1-img.width)/2,和(1-img.height)/2;这样旋转外面的SPRITE,里面的图片看起来正好就像是以图片为中心在旋转。
第二篇,将介绍一下用matrix来指定任意位置进行旋转。
代码如下:
package
{
import flash.display.Bitmap;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.geom.Matrix;
import flash.net.URLRequest;
import flash.utils.Timer;
/**
* 图片旋转
* @author hacker47
*/
public class Main2 extends MovieClip
{
private var loader:Loader;
private var url:String = "1.jpg";
private var bitmap:Bitmap;
private var imgBox:Sprite;
public function Main2()
{
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;
imgBox = new Sprite();
//imgBox.graphics.clear();
//imgBox.graphics.lineStyle(1, 0, 1);
//imgBox.graphics.drawRect( -50, -50, 100, 100);
addChild(imgBox);
bitmap.x = 0- bitmap.width/ 2;
bitmap.y = 0- bitmap.height/ 2;
imgBox.addChild(bitmap);
bitmap.cacheAsBitmap = true;
imgBox.x = stage.stageWidth / 2;
imgBox.y = stage.stageHeight/ 2;
stage.addEventListener(MouseEvent.MOUSE_MOVE, running1);
}
private function running1(e:MouseEvent):void {
var dy:Number = Math.round(mouseY) - (imgBox.y);
var dx:Number = Math.round(mouseX) - (imgBox.x);
imgBox.rotation = Math.atan2(dy, dx) * 180 / Math.PI;
}
}
}
- 大小: 51.9 KB
分享到:
相关推荐
同样,我们可以设置旋转中心点来实现基于特定点的旋转: ```actionscript var rotateAngle:Number = 45; // 旋转角度,以度为单位 var rotationCenterPoint:Point = zoomCenterPoint; function handleImageClick...
1. **初始化**:在构造函数中,设置初始状态,如监听触摸事件,可能还有初始化旋转和缩放中心点的设置。 2. **事件监听**:注册 `TouchEvent` 监听器,以便在触摸开始、移动和结束时执行相应操作。 3. **触摸点处理*...
在给定的压缩包"flash as3 多点触控-缩放-旋转-滑动.zip"中,包含了使用AS3实现多点触控功能的实例,这些功能包括触控缩放、旋转和滑动,适用于触摸屏设备。 首先,让我们深入理解多点触控的基本概念。多点触控允许...
中心点对于缩放和旋转至关重要,因为它决定了图片变换的参照点。 4. **放大缩小**:选中图片后,可以使用“工具箱”中的“缩放工具”(Z键)来放大或缩小图片。按住Shift键同时拖动可以保持纵横比,避免图片变形。...
- 设置旋转中心:通常选择图片的中心点。 - 计算旋转矩阵。 - 将图片的每个像素映射到旋转后的坐标:遍历图片的每个像素,使用旋转矩阵进行坐标转换。 - 使用Graphics对象的DrawImage方法,将映射后的像素绘制到新的...
为了使文字成圆形旋转,我们可以计算出文字距离中心点的距离,然后根据旋转角度改变其x和y坐标。假设舞台的宽度和高度分别为stageWidth和stageHeight,我们可以这样做: ```actionscript var centerX:Number = ...
基本的旋转公式是基于欧几里得几何中的旋转矩阵,对于一个点(x, y)绕原点(0,0)逆时针旋转θ角度,新的坐标(x', y')由以下公式计算得出: x' = x * cos(θ) - y * sin(θ) y' = x * sin(θ) + y * cos(θ) 这里的θ...
然后,我们创建了一个`Graphics`对象`g`,并使用`TranslateTransform`方法设置旋转中心点为图片的中心点,避免了图片旋转后位置的偏移。接下来,通过`RotateTransform`方法设定旋转角度,这里我们以90度为例。最后,...
它首先计算旋转中心点,然后通过三角函数计算新的坐标,并更新控件的位置,从而实现连续的旋转效果。 ### 总结 通过上述分析,我们可以看出,使用VB实现控件绕定点旋转的关键在于正确地计算新坐标,并及时更新控件...
在这个例子中,每次点击Button1,图像就会围绕其中心点旋转90度。注意,实际应用中可能需要考虑更复杂的逻辑,例如保存旋转状态、设置旋转角度限制、平滑旋转效果等。 此外,如果希望只旋转图片而保持窗体不变,...
本教程将详细解析如何利用AS3制作一个鼠标感应图片转动的实例,让图片在一个水平面上绕Y轴旋转,并通过鼠标控制旋转过程。 #### 实例目标与效果 本实例的目标是创建一组图片,在一个假想的平面上绕Y轴进行360度...
这段代码将图片逆时针旋转45度,旋转中心为图片的中心点。 3. 图片放大: 图片放大通常通过调整`DrawImage`方法的参数实现。传入的矩形参数决定了图片在画布上的显示大小。例如,若要将图片放大两倍,可以这样...
2. **动画效果**:在动画中,改变注册点可以使对象以不同的中心点旋转或缩放,创造出独特的视觉效果。 3. **游戏开发**:游戏中,角色或物体的注册点可能需要根据动作变化,如角色跳跃时,注册点下移可以模拟重力感...
这里,我们先将旋转中心设置为图像的中心点(-Width/2, -Height/2),然后执行旋转,确保图片不会因旋转而偏移。 4. **图片翻转**:翻转图片分为水平翻转(镜像)和垂直翻转。水平翻转使用`DrawImage`方法的第二个...
然后,设置旋转中心为图片的中心点,可以通过`g.TranslateTransform(PictureBox.Width / 2, PictureBox.Height / 2)`实现。接着,定义旋转角度,如`Dim angle As Integer = 45`,并使用`g.RotateTransform(angle)`...
通常选择图片的中心点,可以使用`Width`和`Height`属性获取图片尺寸,并计算中心坐标。 ```vb Dim centerX As Integer = img.Width / 2 Dim centerY As Integer = img.Height / 2 ``` 4. **创建旋转矩阵**:使用`...
### 知识点一:任意旋转图片的基本原理 在计算机图形学中,图像的旋转是一种常见的操作。对于任意角度旋转来说,关键是找到旋转中心以及计算出旋转后图像的新边界。在本例中,代码通过数学计算来确定旋转后的图像...
当用户在一个对象上进行两指旋转手势时,程序需要计算这两个触摸点相对于对象中心点的位置变化,然后根据角度差异更新对象的rotation属性。 滑动或平移操作则简单一些,通常是通过单个触摸点在屏幕上的移动来跟踪...
在变形操作中,例如缩放和旋转,都是围绕中心点进行的。例如,当你旋转一个元件时,元件内部的坐标系会随之旋转,但元件的注册点在场景中的位置保持不变。缩放时,元件会以其中心点为基准向四周扩展,这意味着距离...
center = (img_width / 2, img_height / 2) # 图像中心点 rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1.0) ``` 在这里,`1.0`是缩放因子,保持原始图像尺寸不变。`getRotationMatrix2D`函数接受三...