作者etrexetrex (moonet)
看板Flash
标题Re: [问题]如何准确抓到同类别的其他物件
时间Mon Nov 21 12:00:15 2011
※ 引述《Friess (Fries)》之铭言:
: 小弟场景有个btn_new
: 按下会产生物件a
: var a:MovieClip=new A();
: 如果现在舞台上有10个a被addChild近来
: 我想对他们各别hitTestObject
: 例如
: if (a.hitTestObject("请问这边要写什麽!?")){
: xxx
: xxx
: }
: 小弟我现在用的方法是
: 把所有add近来的"物件a",都加到$Array里面
: 而且给予每个"物件a"一个pos属性
: a.pos=$array.length
: 在发生碰撞这边
: var一个影片片段temp
: for (var g=0; g<$array.length; g++) {
: if (g!=e.target.pos) {
: temp=container.getChildAt(g) as MovieClip;
: if (e.target.hitTestObject(temp)) {
: xxx
: xxx
: xxx
: }
: }
: }
: 小弟只会这样用
: 是可以成功碰撞没错
: 但是常常会发生意外,例如temp抓到自己
: 有什麽方法可以更准确的抓到同类别的物件吗?
: 拜托各位大大帮忙解答,这真的困扰我好久
你的 array 装了什麽进去 ?
你的回圈里面没用到 $array[g] 阿 = =
试试这个看看
var a:MovieClip = e.target;
var child:MovieClip;
for(var i = 0 ; i < container.numChildren ; i++)
{
child = MovieClip(container.getChildAt(i));
if(a != child)
if(a.hitTestObject(child))
{
xxx
}
}
会出现问题有可能是你在 xxx 里面去做了 addChild 或是 removeChild
造成回圈不完整或是 childIndex 跑位
但直接比对物件的话应该不会出包
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.137.198.18
1F:推 Friess:不好意思,少打一段,我的$Array里面有Push每个Add的"A" 11/21 17:18
2F:→ etrexetrex:问题是你只有存入没有取出 11/22 11:48