Получение объектов за пределами экрана - PullRequest
0 голосов
/ 31 марта 2012

Итак, я создаю что-то вроде случайно сгенерированного лабиринта во флэш-памяти. Для этого я заполняю игровое пространство блоками, а затем располагаю алгоритмом, который удаляет определенные соединительные блоки для формирования пути.

Когда я генерирую блоки, Flash не имеет проблем с размещением их в закадровых точках, таких как (-1000, -1000), но затем, когда я пытаюсь впоследствии удалить их, чтобы сформировать путь, stage.getObjectsUnderPoint () ничего не возвращает для эти точки.

Как получить объекты под точкой, если их нет на экране?

1 Ответ

3 голосов
/ 31 марта 2012

Я предполагаю, что все эти блоки хранятся в массиве или векторе.Таким образом, вы можете проверить точку и перебрать все ваши блоки, чтобы проверить, какой блок находится в этой позиции.Пример:

//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 внутри объектов, но в этом примеревозвращает только точечные местоположения точек.

...