Самый эффективный способ отслеживать значения x и y нескольких экземпляров объекта на сцене? - PullRequest
0 голосов
/ 27 октября 2011

У меня есть произвольное количество экземпляров объекта на сцене. В любой момент времени число объектов может составлять от 10 до 50. Каждый экземпляр объекта может двигаться, но движение происходит постепенно, текущие координаты непредсказуемы, и в любой данный момент мне может потребоваться получить координаты конкретного объекта. экземпляр.

Существует ли в этом случае наиболее распространенный метод для отслеживания координат экземпляра объекта? Я могу думать о двух подходах:

  1. Я пишу функцию внутри класса объектов, которая при выполнении произвольного события вызывается для экземпляра объекта и возвращает координаты экземпляров этого объекта.

  2. В классе объекта я объявляю глобальные статические переменные, которые представляют значения x и y, и при произвольном выполнении события переменные обновляются с использованием самых последних значений для этого экземпляра объекта.

Хотя я могу заставить оба метода работать, я не знаю, будет ли один или другой вредить производительности программы в долгосрочной перспективе. Я склоняюсь к глобальным переменным, потому что ожидаю, что для обновления и вызова переменной требуется меньше ресурсов, чем для вызова функции, которая впоследствии обновляет и вызывает переменную. Может быть, есть даже третий вариант?

Я понимаю, что это несколько субъективный вопрос. Я спрашиваю о потреблении ресурсов, поэтому, пожалуйста, ответьте на этот вопрос.

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Я не понимаю. Свойства x и y хранятся в объекте (если это DisplayObject) и доступны для чтения. *

Если вы не используете DisplayObject в качестве базы, просто создайте свойства самостоятельно с соответствующими геттерами.

Если вы хотите получить координаты всех ваших объектов, добавьте их в массив, скажем, objectList.

Тогда просто используйте цикл для проверки значений:

for each(var i:MovieClip in objectList)
{
    trace(i.x, i.y);
}

Думаю, я неправильно понимаю вопрос.

1 голос
/ 27 октября 2011

определенно 1. для читабельности кода используйте свойство get, т.е.

public function get x():Number { return my_x; }

Проблема, связанная с 2, заключается в том, что вам также может понадобиться отслеживать, для какого объекта эти координаты - не говоря уже о том, что он просто грязный ... Глобалы могут быстро стать неуправляемыми, следовательно, весь этот повторный поиск в ООП инкапсуляция и избавление (в основном) от необходимости глобализаций.

только с 50 или менее объектами - даже не учитывайте проблемы с производительностью ...

И помните, что старая мантра - «Преждевременная оптимизация - корень злого программирования»; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...