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

Мне нужна помощь с физическим движком Nape в AS3. У меня есть класс с некоторыми прямоугольниками (телами затылка) в качестве переменных-членов. У меня есть InteractionListener, который реагирует, когда эти прямоугольники взаимодействуют с некоторыми кругами (также телами затылка) в сцене. Однако мне нужно получить доступ к экземпляру класса, частью которого является прямоугольник, при обработке столкновения внутри 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();
}

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

1 ответ

Ненавижу, когда нахожу решение секунды после того, как спрашиваю об этом. Если кто-то еще заинтересован в решении:

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

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

Другие вопросы по тегам