2012-10-11 58 views
2

我一直试图在最近一直在处理的项目中设置hitTestObject函数,并遇到一些困难。AS3 - 通过For循环添加动态影片剪辑的hitTestObject

这是因为我试图通过For循环动态添加MovieClip实例来完成此操作。正在添加的影片剪辑被称为“正方形”,当我离开鼠标点击时,我将一系列这些影片剪辑添加到舞台上。我的问题是我想听一个hitTestObject'square'截取'square'和后续添加相同的MovieClip。

我已经设置了一个数值变量,每增加一个'方形'影片剪辑通过左键单击到舞台上就会增加1,并且我将这个数字与一个字符串一起分配以创建一个square.name实例。

在我的情况下,第一组添加的影片剪辑会有一个名为“Square 1”的.name实例,然后在第二次点击鼠标时点击“Square 2”等等。

我还添加了每个名字并将其推送到容器数组中以供稍后参考。

那么我怎么才能真正引用这些动态名称在hitTestObject参数中使用我的.name实例和数组?

我相信这是显而易见的,我已经做了基础工作,所以任何帮助指出这一点我会大大appriciated。

很多谢谢。

+0

如果你可以请展示你的基础工作,我意识到你已经在这里解释过(相当好),但不得不想想你的代码看起来像增加了难度来回答它。 – shaunhusain

+0

我可以完全理解你的观点@shaunhusain,我会在接下来的几个小时内发布我的代码,以便为我的问题添加更多的基础,但同时我想我的查询的关键涉及到关键的hitTestObject代码行(“Contact Made”); - 如果(square.hitTestObject(square))\t \t \t \t \t \t \t}现在显然这不适用于我所问的问题,但为了引用我的'正方形'MovieClip并区分它们,我将使用get childByName,还是引用'square'为square [i]和将此与数组中的.name绑定在一起? – Joel

回答

0

假设您正在尝试在时间轴中执行此操作,并且您在库中名为'Square'的MovieClip子类,这里有一种可能的方法。当hitTests正在执行时,请小心修改数组。如果要删除正方形,请等待所有测试完成后,或者复制正方形数组。

var squares: Array = []; 

function addSquares(n: int): void { 
    var square: MovieClip; 

    for (var i: int = 0; 
    i < n; 
    i++) { 
     square = new Square(); 
     square.name = "square" + i; 
     addChild(square); 
     squares.push(square); 
    } 
} 


function checkHits(): void { 
    var square: MovieClip; 
    var checkSquare: MovieClip; 

    for (var i: int = 0; 
    i < squares.length; 
    i++) { 
     square = squares[i]; 

     for (var j: int = i + 1; 
     j < squares.length; 
     j++) { 
      checkSquare = squares[j]; 

      if (square.hitTestObject(checkSquare)) { 
       squaresHit(square, checkSquare); 
      } 
     } 
    } 
} 


function squaresHit(square1, square2): void { 
    // do something 
    trace("squaresHit:" + square1.name + "," + square2.name); 
} 


addSquares(4); 
checkHits(); 

//squaresHit:square0,square1 
//squaresHit:square0,square2 
//squaresHit:square0,square3 
//squaresHit:square1,square2 
//squaresHit:square1,square3 
//squaresHit:square2,square3 
+0

感谢您分享这个@dezza并花时间代表我自己构建这段代码 - 从阅读这段代码开始,它肯定会沿着我试图制作的内容来看。 addSquares函数基本上覆盖了我的现有设置,虽然我在类中生成此代码而不是在时间轴上,但它是checkHits函数中的代码,它看起来是解决我的问题的关键,在+1和hitTesting之间的2 var的动画片段 - 将尝试这一点,让你知道它是怎么回事。很多再次感谢 – Joel

+0

感谢@dazza - 我已经设法将此代码实现到我的项目中,并且现在正在两个具有相同初始实例名称的影片剪辑之间进行检测。如果其他人有这个问题,那么代码dazza提供的'checkHits()'函数将是一个很好的地方来查看和建立! – Joel