|
主题: 某网络公司招聘Flash程序员的AS考题,高手请进
|
 macenjie
职务:普通成员
等级:1
金币:0.0
发贴:27
注册:2000/10/28 15:29:46
|
#12002/7/23 17:52:15
有一个长方形的MC,名字是a, 然后我写如下代码: on (press) { duplicateMovieClip(_root.a,"b",1); setProperty(_root.b,_rotation,30); _root.b._width=200; trace(_root.b._width); 最后trace输出的竟然是178,而不是200 请高手做答 源代码就这几行字,可以在http://asp.6to23.com/macenjie/test.fla下载到
|
 5D限制级
职务:普通成员
等级:6
金币:10.0
发贴:4970
注册:2001/8/16 14:52:34
|
#22002/7/23 19:29:44
duplicateMovieClip(_root.a,"b",1); _root.b 不一样吧
这样 duplicateMovieClip(_root.a,"b",1); setProperty("",_width,30);
|
 Demon.S
职务:版主
等级:5
金币:10.0
发贴:2468
注册:2000/9/15 13:56:49
|
#32002/7/24 10:12:31
关键是rotation30,就出现一个角度的问题 width也是getter/setter属性,两个的计算方法其实不甚一样,set的时候就设定内部原constructor mc的width,而不是设定instance的;而get的时候会按水平最左边到最右边的宽度来计算,跟constructor mc没关系。
|
 chocobo
职务:普通成员
等级:1
金币:0.0
发贴:15
注册:2001/2/18 12:02:11
|
#42002/7/25 10:46:37
哈哈,這題目出得真夠摳門的
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
|
#52002/7/25 15:08:40
不对呀,将矩形旋转后,bounding box的水平宽度应该比原来的值要大,而这里反且变小了  我以前试过MX中的stage._width & _height属性,它们两个的数值也比在movie properties中预设的要小。这是何故?
|
 手工感情
职务:普通成员
等级:3
金币:10.0
发贴:556
注册:2001/1/3 2:50:20
|
#62002/7/25 18:37:52
“不对呀,将矩形旋转后,bounding box的水平宽度应该比原来的值要大”??? 当然也有这种可能,不过那是长比宽的值要大的矩形。
黑色的风略过我的翅膀,我却无法落下来梳理你的羽毛 ———————————————— ◆5d.cn互动论坛◆ ------|xml版主|------
|
 5D限制级
职务:普通成员
等级:6
金币:10.0
发贴:4970
注册:2001/8/16 14:52:34
|
#72002/7/25 21:16:30
setProperty(_root.b,_rotation,30); _root.b._width=200;
各位大哥 小弟迂腐 旋转在宽度赋值之前定义 何来旋转决定宽度?
那后面的宽度赋值有何意义?
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
|
#82002/7/25 23:04:09
handmade在上个帖子中说 引用: 当然也有这种可能,不过那是长比宽的值要大的矩形。
有两种情况(这里假设以中心点为旋转中心): 1。长比宽大:在开始旋转到某个特定角度之前(如a度,此时矩形的两个不相邻顶点与另两不相邻顶点分别重合),绑定框的长比原长要大;旋转过a度以后,绑定框的长就比原长小。 2。长比宽小:在旋转到360度之前,绑定框的长总是比原长要大。至360度时,完全重合,与原来相等。
|
 Demon.S
职务:版主
等级:5
金币:10.0
发贴:2468
注册:2000/9/15 13:56:49
|
#92002/7/26 10:30:54
从x轴的最左边到最x轴最右边的点的最短距离就是mc的宽。
|
 手工感情
职务:普通成员
等级:3
金币:10.0
发贴:556
注册:2001/1/3 2:50:20
|
#102002/7/28 17:50:06
janlay在上个帖子中说 引用: 有两种情况(这里假设以中心点为旋转中心): 1。长比宽大:在开始旋转到某个特定角度之前(如a度,此时矩形的两个不相邻顶点与另两不相邻顶点分别重合),绑定框的长比原长要大;旋转过a度以后,绑定框的长就比原长小。
2。长比宽小:在旋转到360度之前,绑定框的长总是比原长要大。至360度时,完全重合,与原来相等。
仔细想了一下,是这个情况,看来还是要具体问题具体分析。
黑色的风略过我的翅膀,我却无法落下来梳理你的羽毛 ———————————————— ◆5d.cn互动论坛◆ ------|xml版主|------
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
|
#112002/7/28 22:24:20
呵呵,我也是亲自画图旋转才发现的。以前都没有考虑全面,看来还是要亲力亲为呀  所以那道题要看那个矩形是什么样子的。另外,画魔关于setter & getter的解释还不能令人信服,不知道有没有这方面的官方文档
|
 zaza
职务:普通成员
等级:2
金币:1.0
发贴:490
注册:2002/6/5 17:49:30
|
#122002/7/29 14:49:07
我运行了下,这个结果和MC的高度是有关的,结果是200*cos30+高度 *tg30吧! 这个width是指旋转后mc的宽度而不是你所看到的矩形的宽度,包括mc(b)的空白部分!
|
 Demon.S
职务:版主
等级:5
金币:10.0
发贴:2468
注册:2000/9/15 13:56:49
|
#132002/7/30 9:58:21
janlay在上个帖子中说 引用: 呵呵,我也是亲自画图旋转才发现的。以前都没有考虑全面,看来还是要亲力亲为呀 :)
所以那道题要看那个矩形是什么样子的。另外,画魔关于setter & getter的解释还不能令人信服,不知道有没有这方面的官方文档 :rolleyes:
width铁定是getter/setter没错的,否则没办法得到它的值。 instance的宽和constructor的宽是不一样的,但是计算方法都是一样的。 官方文档肯定没有,但计算公式我可以给 mc_width=(x2-x1)/2; mc_height=(y2-y1)/2;
由此应该知道,如果instance和constructor的角度不一样的话,得到的值当然不一样,另外,如果xscale/yscale有差异的话,得到的值更难想象,总之不会一样。 D:)S
|