如何引用同一个类的另一个实例?它们都没有任何名称,因为它们是通过代码生成的。每次生成随机数量的实例。我需要比较它们。感谢。
这是我在时间轴上生成的代码(生成实例)。
var minLimit:uint = 1;
var maxLimit:uint = 10;
var range:uint = maxLimit - minLimit;
var p:Number = Math.ceil(Math.random()*range) + minLimit;
for (p; p <= maxLimit; p += 1)
{
var myCell:Cell = new Cell();
var xminLimit:uint = 100;
var xmaxLimit:uint = 300;
var xrange:uint = xmaxLimit - xminLimit;
var xp:Number = Math.ceil(Math.random()*xrange) + xminLimit;
addChild(myCell);
myCell.x = xp
myCell.y = xp
myCell.scaleX = 3
myCell.scaleY = 3
}
var listOfCells:Array = new Array();
for (var i:int =0; i < (root as MovieClip).numChildren; i++)
{
listOfCells.push((root as MovieClip).getChildAt(i));
}
trace(listOfCells)
var len:int = listOfCells.length;
for (var j:int =0; j < len; j++)
{
trace(listOfCells[j].x);
}
trace("Cells on stage: " + Cell.count);
游戏会随机出现一些细胞。为了编码,他们有时会更接近并相互检查,我需要知道如何比较它们。例如,我可以在类中放入代码 - 如:this this.x&lt; OTHER(同一类).x所以我可以比较同一类中的两个不同实例。
答案 0 :(得分:0)
比较细胞并让它们相互移动,如果它们相距200px以下(例如):
var maxDistance: Number = 200;
var minDistance: Number = 20;
var len:int = listOfCells.length;
for (var j:int =0; j < len; j++)
{
var cell: Cell = listOfCells[j];
for(var k:int = 0; k < len; k++)
{
var cellToCompare = listOfCells[k];
if(cellToCompare != cell) {
var dx: Number = cellToCompare.x - cell.x;
var dy: Number = cellToCompare.y - cell.y;
var distance : Number = Math.sqrt(dx * dx + dy * dy);
if(distance < maxDistance && distance > minDistance) {
cell.x = cell.x + dx * 0.1;
cell.y = cell.y + dy * 0.1;
}
}
}
}
另外,为了确保数组只包含Cell实例,请使用'is'运算符:
var listOfCells:Array = new Array();
for (var i:int =0; i < (root as MovieClip).numChildren; i++)
{
var child: DisplayObject = (root as MovieClip).getChildAt(i);
if(child is Cell) {
listOfCells.push(child);
}
}