注册点 相关的文章

以注册点拖动旋转对象

给群里的朋友写的东西..不多说了...


  相关下载 (26.5 KiB, 179 hits)

分类: ACTIONSCRIPT , 标签: ,

动态"修改"注册点

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


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

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

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

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


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

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

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

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


下面是源码...
代码写得很乱..角度算了很久...把初中的sin/cos全忘了...
迟点再改成一个类直接调..今天就先到这里..
  相关源文件 (269.2 KiB, 260 hits)
分类: ACTIONSCRIPT , 标签: