作者cochiachang (蓝玥)
看板Flash
标题Re: [问题] hitTest问题
时间Wed Feb 13 14:36:09 2008
※ 引述《mankitu (嗯哼 7。)》之铭言:
: 我想做一个便当游戏
: 左边有一个便当盒 右边是一些食材
: 当右边的食材hitTest到左边便当盒(有很多感应物件)时,会stopDrag,
: 然後食材会跟感应区的座标一样
: 可是我遇到瓶颈了 就是我不会写函数
: 我预计左边有20个感应区 右边有二十个食材 如果一个一个写上去我就喵掉了
: 垦求各位大大的帮忙 谢谢 拜托了!!
: 下面是目前我能做到的(汗)
: http://www.nhcue.edu.tw/~u9215042/question.rar
我不知道你的意思是不是说 让它拉动 然後拉到左边感应区
若它碰到那个感应区 便会在那个感应区的位置这样
不过 以你的程式来看
因为感应区大小与被感应的大小并不相同
若是要以整个元件来感应 一个食材有可能感应到多的感应区
因此这方面你应该做些设定
若是你想要使用回圈处理要做相同动作的不同元件
可将元件名称取为a1、a2、a3等等...
然後用for回圈加上eval("a"+i)来呼叫各个元件
下面是我撰写的程式
我将你的b1、c1改名为b1、b2、b3....
然後将所有元件上的程式码删除
------------------------------------------
stop();
for(var i=1;i<=20;i++){
eval("b"+i).onPress=function(){
this.startDrag();
}
eval("b"+i).onRelease=function(){
d_target(this._name);
}
}
function d_target(MC_name){
eval(MC_name).stopDrag();
for(var i=1;i<=20;i++){
if(eval(MC_name).hitTest("/a"+i)) {
eval(MC_name)._x=eval("a"+i)._x;
eval(MC_name)._y=eval("a"+i)._y;
break;
}
}
}
---------------------------------------------
不过因为你感应区与图像大小不同
所以感应会出些问题
我是建议你可以用两种方式去解决这问题
一种是将图像做成符合感应区大小的元件
二是在每个元件里新增一感透明应区 然後使用元件内的感应元件做为感应判断主体
以上
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.117.9.209
1F:→ cochiachang:唔 上面的大大动作比我快 02/13 14:38