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

AS3:使用actionscript设置DisplayObject的注册点?

如何解决《AS3:使用actionscript设置DisplayObject的注册点?》经验,为你挑选了2个好方法。

你如何通过动作脚本在Sprite或Shape上设置注册点(我知道这很简单,使用Flash,但我需要在actionscript中完成它)



1> Troy Gilbert..:

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.



2> picardo..:

使用变换矩阵这是可能的.这是在这个网站上找到的一个很好的实现.

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);
    }
}

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