作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] hitTest问题
时间Wed Feb 13 04:34:28 2008
看看这是不是你要的效果吧
线上观看
http://0rz.tw/993Ga
原始档案
http://0rz.tw/8e3H5
我用到的几个重点如下:
0.我把所有code写在影格上,然後各自MC上面的code都删掉了
因为这样看得比较清楚
1.将食物的名称取为 b1, b2, b3
2.将感应区取名为 a1, a2, ..., a20
3.用for回圈跑过每一个食物的onPress和onMouseUp来定义该handler
4.在上述的onMouseUp handler里面再用for回圈跑过每个感应区
如果该感应区与食物的hitTest()为true
则将该感应区的reference加入到一个叫做register的暂时阵列
之後选择register中与食物距离最短的感应区
( 算距离的函式 distance(mc1, mc2):Number 定义在code的最下面)
最後将食物的位置设定为该感应区的位置
※其中在for回圈里面用到了"Associative Array"语法
简单来说, this["abc"] 和 this.abc 是相同的意思
所以以下的code范例就是将 b1~b20 的_x值归零
for(var i:Number = 0; i <= 20; i++) {
this["b" + i]._x = 0;
}
使用Associative Array语法应该就是你想要的解答
如此一来就不用同样的code重复20次
毕竟,写程式一大忌讳就是出现code duplication
同样功能的code应该只出现一次才是最上策
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凯特 = 蜚蠊猫 = 蟑螂猫
Gallery
http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比闪光(Adobe Flash)研讨区
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 70.181.86.161
※ 编辑: cjcat2266 来自: 70.181.86.161 (02/13 04:40)