[转载]动态"修改"flash显示对象注册点

[url]http://www.eb163.com/club/thread-16407-1-4.html[/url]


作者:L4cd
经常有朋友问..如何动态修改一个显示对象的注册点..
而一般的朋友需要修改注册点,基本上都是旋转的需要..
今天来讨论一下这个问题..
首先..我们先理解一下..注册点是一个什么样的概念..


我们先用三种情况来对比一下..
下图是三个MC注册点分别是..左上/居中/右下的三种情况..MC里画着一个100px*100px的正方形.

[img]http://dl.iteye.com/upload/attachment/379822/616bbde7-27d7-3920-aa81-a23038fe727f.jpg[/img]



4 天前 上传下载附件 (56.35 KB)


从上图中我们可以看到..所谓的注册点都是相对的..
一个显示对象的注册点,其实就是他的子对象的相应位置
左上:子对象相对位置为0,0
居中:子对象相对位置为-width/2,-height/2
右下:子对象相对位置为-width,-height
其它位置如此类推..

按这种情况..我们看下以下的swf,点击swf任意的地方.会按左上/居中/右下循环切换.


这就是修改注册点的最基本的方法..


相应的..像Bitmap这类显示对象..或像组件这些比较不容易操作子对象的,一般采取的方法就是给他添加一个父对象,然后通过上面的方法来处理..
这种方法的缺点就是增加了无用的容器..复杂化了结构..

那么我们从另一个角度出发..
以不同的注册点旋转..就是以不同的中心点旋转..
我们只要模拟一个中心点..然后计算出对象以该点旋转后相应的x,y的值,就可以达到我们需要的效果..

看看下面的例子..swf上按住左键..调旋转中心的位置..按start开始旋转..按stop停止..


像这样..无论是任意的显示对象..我们都可以指定任意坐标为"注册点",来进行旋转..
不需要像第一种方法..需要改成子对象的位置或添加一个父对象..

下面是源码...
代码写得很乱..角度算了很久...把初中的sin/cos全忘了...
迟点再改成一个类直接调..今天就先到这里..
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值