我一直在尝试在我最近工作的项目中设置一个hitTestObject函数,但遇到了一些困难。
这是因为我正在尝试使用For循环动态添加的MovieClip实例。正在添加的MovieClip被称为'square',当我离开Mouse Click时,我将一系列这些MovieClip添加到舞台上。我的问题是我想听一个'square'截取'square'的hitTestObject以及随后添加的相同MovieClip。
我已经设置了一个数字变量,每次我通过左键单击将“square”MovieClip组添加到舞台时,该数字变量增加1,我已将此数字与字符串一起分配,以组合在一起创建一个square.name instance。
在我的情况下,添加的第一组MovieClip会在第二次鼠标点击时出现一个名为“Square 1”的.name实例,然后是“Square 2”,依此类推。
我还添加了每个名称并将其推送到容器数组中,以便稍后进行引用。
那么如何使用我的.name实例和数组实际在hitTestObject参数中引用这些动态名称?
我确信这是显而易见的,而且我已经完成了基础工作,所以任何有助于指出这一点的帮助都会受到极大的关注。
非常感谢。
答案 0 :(得分: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