当前位置:  开发笔记 > 编程语言 > 正文

Flex/ActionScript - 围绕其中心旋转Sprite

如何解决《Flex/ActionScript-围绕其中心旋转Sprite》经验,为你挑选了2个好方法。

我在Actionscript中创建了一个Sprite并将其渲染为Flex Canvas.假设:

var fooShape:Sprite = new FooSpriteSubclass();

fooCanvas.rawChildren.addChild(myshape);

//Sprite shape renders on screen

fooShape.rotation = fooNumber;

这将旋转我的形状,但似乎围绕其父容器(画布)的左上角旋转它.

如何强制Sprite绕自己的中心点旋转?我显然可以编写代码来计算旋转,然后让它重新渲染,但我认为必须有一个内置的方法来做到这一点,当然不希望"重新发明轮子",如果可能的话.

我使用的是FlexBuilder,因此无法访问完整的Flash API.

非常感谢!



1> Ronnie Liew..:

基于参考点旋转对象需要以下步骤(使用Matrix对象和getBounds):

    矩阵转换(移动到参考点)

    矩阵旋转

    矩阵翻译(回到原始位置)


例如,将对象围绕其中心旋转90度:

// Get the matrix of the object  
var matrix:Matrix = myObject.transform.matrix; 

// Get the rect of the object (to know the dimension) 
var rect:Rectangle = myObject.getBounds(parentOfMyObject); 

// Translating the desired reference point (in this case, center)
matrix.translate(- (rect.left + (rect.width/2)), - (rect.top + (rect.height/2))); 

// Rotation (note: the parameter is in radian) 
matrix.rotate((90/180)*Math.PI); 

// Translating the object back to the original position.
matrix.translate(rect.left + (rect.width/2), rect.top + (rect.height/2)); 



使用的关键方法:

Matrix.rotate

Matrix.translate

DisplayObject.getBounds



2> irongamer..:

其他例子没有太多运气.这个对我有用.我在UIComponent上使用它.

http://www.selikoff.net/2010/03/17/solution-to-flex-image-rotation-and-flipping-around-center/

private static function rotateImage(image:Image, degrees:Number):void {
// Calculate rotation and offsets
var radians:Number = degrees * (Math.PI / 180.0);
var offsetWidth:Number = image.contentWidth/2.0;
var offsetHeight:Number =  image.contentHeight/2.0;

// Perform rotation
var matrix:Matrix = new Matrix();
matrix.translate(-offsetWidth, -offsetHeight);
matrix.rotate(radians);
matrix.translate(+offsetWidth, +offsetHeight);
matrix.concat(image.transform.matrix);
image.transform.matrix = matrix;

}

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有