January 9, 2007

【黑羽】解疑(7):AS2动态改变影片注册点

ActionScript3天地会公测中...

这个问题被问的次数多了,所以整理一下,发个贴出来。
以前我碰到这个问题就是直接打个包装MovieClip就不管了,但是对于要访问影片内部的子影片或者其他属性就麻烦了。因为路径改变了。

www.darronschall.com上有一个更好的方法:
通过静态类方法initialize将目标MC加上了几个新属性,_x2,_y2等等新的属性。然后呢,设定新的注册点坐标。
在我们操作_x2,_y2等属性时,实际上是执行了set_x2()等get,set函数,这些函数就执行了一些换算,将我们新设置的值_x2与新设置的注册点位置进行偏移折算,转换成了真正的_x值,这样target_mc就等到了转换之后的_x值,并执行了相应的变化。

(以下内容来自http://www.darronschall.com/weblog/archives/000054.cfm)
点击此处下载工具类
然后,使用方法如下:

//使用前,先导入类
import com.darronschall.DynamicRegistration;

// Assume there is an instance named square_mc on the stage
//你要操作的MC
var square_mc:MovieClip;

// updated 7/28/05 - add the dynamic registration stuff at runtime to our square movieclip
//使用DynamicRegistration初始化你的目标MC
DynamicRegistration.initialize(square_mc);

// The square_mc has an original registration at 0,0 so
// let's change that to 10, 60 at runtime.
//输入新注册点的坐标
square_mc.setRegistration(10, 60);

// Now whenever we access a property of the square_mc that deals
// with the registration point, use a "2" after the property name...
// These are the available properties:
//然后要操作这个MovieClip时就用如下的新属性来操作,只不过是在原来的尾部上加一个2
square_mc._x2 = 4;
square_mc._y2 = 7;
square_mc._rotation2 = 40;
square_mc._xscale2 = 140;
square_mc._yscale2 = 80;
// square_mc._xmouse2 is readonly
// square_mc._ymouse2 is readonly


广告:哈哈,现在刚好是阿里妈妈推广期哦,你是站长吗?推荐注册阿里妈妈赚广告费

TrackBack

TrackBack URL for this entry:
http://www.kingda.org/mt/mt-tb.cgi/135

Comments (6)

我想问一下,使用这个类以后,mc进行scale缩放的时候是以新的注册点为原点进行缩放的吗?

Scale缩放时要使用_xscale2,_yscale2
square_mc._xscale2 = 140;
square_mc._yscale2 = 80;

天之痕:

你好
看了你很多教程
跟想跟您多学习下AS3
可以加QQ交流吗?
我QQ:66266563
多谢

SDF:

seen
欢迎回访我的个人BLOG,
阅读了你的这篇文章,
My Blog:听景777
GOOGLE个人空间-
http://tingjing777.blogspot.com/

赵洪日:

黑羽说下怎么用Matrix来改变注册点吧

留下高见,发表评论

个人信息不会外泄,请放心填写。

姓名和Email必填。

发表评论后,请耐心等待,不要频繁刷新。提交完成后,刷新一下本页即可看到您的评论。^_^

请输入验证字符"r" :
文字广告:你是站长吗?注册阿里妈妈赚广告费

最近发表

归档

全部
Creative Commons License
此 Blog 中的日记
遵循以下授权:
Creative Commons
(创作共用) 授权
.
Google PageRank
本站被Adobe官方MXNA新闻聚合器收录
本站被蓝色理想BXNA收录