[AS3][Nape Physics] Как получить доступ к связанному объекту тела Nape в InteractionListener?

Мне нужна помощь с физическим движком Nape в AS3. У меня есть класс с некоторыми прямоугольниками (тела Nape) в качестве переменных-членов. У меня есть InteractionListener, который реагирует, когда эти прямоугольники взаимодействуют с некоторыми кругами (также телами Nape) в сцене. Однако мне нужно получить доступ к экземпляру класса, частью которого является прямоугольник, при обработке коллизии внутри InteractionListener. Экземпляр класса имеет несколько методов, которые мне нужно вызвать. Как я могу это сделать?

public function foodInteraction(callback:InteractionCallback):void {
    Food.list.remove(Body(callback.int1));
    Universe.space.bodies.remove(Body(callback.int1));
    // callback.int2 is part of class Organism, 
    // need to access that organism and call organism33.eat();
}

У меня есть динамическое количество экземпляров организма. Каждый организм имеет динамическое количество прямоугольников. Взаимодействует только первый прямоугольник. Единственное решение, которое я вижу прямо сейчас, состоит в том, чтобы все взаимодействующие прямоугольники были в отдельном списке вместе со списком всех экземпляров организма, а затем доступ к организму через индекс прямоугольника в другом списке. Но было бы намного быстрее получить доступ к организму через некоторые пользовательские данные в прямоугольном теле... Я не мог расширить тело, потому что это окончательный класс. Пожалуйста помоги!


person user1066278    schedule 23.10.2014    source источник


Ответы (1)


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

Сохраните экземпляр следующим образом: body.userData.organism =organism;

Затем получите к нему доступ: callback.int2.userData.organism.foo();

person user1066278    schedule 23.10.2014