在屏幕外点获取对象

时间:2012-03-31 01:56:13

标签: actionscript-3 flash flash-cs5

所以我在flash中创建了一个随机生成的迷宫。为此,我用块填充游戏空间,然后使用一种算法删除某些连接块以形成路径。

当我生成块时,flash将它们放在诸如(-1000,-1000)之类的屏幕外点没有问题,但是当我尝试之后删除它们以形成路径时,stage.getObjectsUnderPoint()不返回任何内容这些要点。

如果屏幕上没有对象,如何获取它?

1 个答案:

答案 0 :(得分:3)

我假设您将所有这些块存储在数组或向量中。因此,您可以检查一个点并遍历所有块,检查该位置的块是什么。 例如:

//return type could be whatever the blocks are
private function getObjectUnderPoint(p:Point):Object{         
    for(var i:int = 0; i < blocks.length; i++){
        //checks for the block at position p
        if(blocks[i].x == p.x && blocks[i].y == p.y){
            return block[i];
        }
    }
 //return null if there is no block under point p
 return null;
}

在你的情况下,在某一点上只有一个块,所以你不必返回一个块数组,但你可以根据需要修改它。此外,如果您没有将数据块存储在数组或向量中,我会高度推荐您这样做。

为了使这更加通用,您可以将舞台传递给该功能。然后检查那个阶段的孩子们。

示例:

private function getObjectUnderPoint(s:Stage, p:Point):Array{  
    var objects:Array = new Array();       
    for(var i:int = 0; i < s.numChildren; i++){
        var obj:Object = s.getChildAt(i);
        //checks for the objects at position p
        if(obj.x == p.x && obj.y == p.y){
            objects.push(obj);
        }
    }
 return objects;
}

也可以更改函数内部的if语句,以检查点p是否位于对象内部,但此示例仅返回extact point位置。