AS3怎么控制位图Bitmap的旋转
1个回答
展开全部
s.addChild(image);//旋转就旋转这个s
============
这个是注册点的问题,在flash程序里面,显示对象缩放、旋转都是基于注册点,flash里面不可以直接修改注册点的位置,我们可以换一个思路解决问题。
flash里面是基于显示对象的,旋转一个容器,容器里面的子对象会跟随父容器旋转,位图导入之后注册点的位置是位于右上角,你可以new一个sprite对象sp,然后将bitmap添加到sp对象里面,去设置bitmap的位置,然后旋转sp就行了
var sp:sprite=new Sprite()
addChild(sp)
sp.addChild(bitmap)
bitmap.x=-bitmap.width/2
bitmap.y=-bitmap.height/2
这样旋转sp对象就相当于bitmap绕着中心旋转
=============
呵呵,当然也能使用Matrix实现绕任意点旋转,
import flash.display.Bitmap;
import flash.display.DisplayObject;
import flash.geom.Matrix;
var bitmap:Bitmap = new Bitmap(new Bitmap1());
bitmap.x = 262-bitmap.width/2;
bitmap.y = 146-bitmap.height/2;
addChildAt(bitmap, 0);
var matrix:Matrix = bitmap.transform.matrix;
// 注意旋转要相对于最初的matrix, 否则效果将跟你想的不一致.
rotate(bitmap, 30, bitmap.width/2, bitmap.height/2, matrix);
function rotate(dis:DisplayObject, rotation:int, px:int, py:int, original:Matrix):void{var tx:int = dis.x + px;
var ty:int = dis.y + py;
var m:Matrix = original.clone();
m.translate(-tx, -ty);
m.rotate(rotation/180*Math.PI);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询