你如何通过动作脚本在Sprite或Shape上设置注册点(我知道这很简单,使用Flash,但我需要在actionscript中完成它)
Flash Player API不会公开此内容.我相信这是因为Flash在创建SWF时实际上将注册点烘焙到形状数据中.因此,没有实际的注册点可以移动(相反,您可以移动形状数据......如果Flash Player允许您编辑形状数据!).
我总是通过简单地将我的精灵/形状变为另一个DisplayObject来解决这个问题.所以,如果我有spriteA并希望将其注册点设置为(15,35),我会这样做:
var spriteB:Sprite = new Sprite(); spriteB.addChild(spriteA); spriteA.x = 15; spriteA.y = 35;
然后从那时开始,在我之前提到spriteA的地方引用spriteB.
使用变换矩阵这是可能的.这是在这个网站上找到的一个很好的实现.
public function setRegistrationPoint(s:Sprite, regx:Number, regy:Number, showRegistration:Boolean ) { //translate movieclip s.transform.matrix = new Matrix(1, 0, 0, 1, -regx, -regy); //registration point. if (showRegistration) { var mark:Sprite = new Sprite(); mark.graphics.lineStyle(1, 0x000000); mark.graphics.moveTo(-5, -5); mark.graphics.lineTo(5, 5); mark.graphics.moveTo(-5, 5); mark.graphics.lineTo(5, -5); s.parent.addChild(mark); } }